用OCR软件来输入文本已成为很多扫描仪用户最常用到的功能,但是在OCR识别过程中,往往会出现许多识别错误的情况。这到底是什么原因呢?有什么办法可以提高OCR识别率呢?不用着急,相信当您看完本文,就会找到答案。8 v2 B& I- E9 y. P
2 a4 u8 j; x5 S+ i3 c: t- Z+ }一、我的OCR识别软件真的很糟糕吗?; s" j3 B: W1 T/ u. u, s4 N
3 H; T, Z6 y. l7 T4 F& l" @ 近几年来,扫描仪已越来越广泛地应用于办公室自动化等各个领域。有调查表明,95%的用户希望购买扫描仪的主要原因之一就是打算利用扫描仪和OCR软件来输入汉字。随着OCR光学字符识别技术的发展,扫描仪在汉字录入领域越来越受到重视。只要用扫描仪将整页文本图像输入到计算机,就能通过OCR软件自动转化成汉字文本文件,这与人工录入汉字的效果是一样的,但速度却比人工录入快几十倍。它使人们从繁琐的键盘录入汉字的工作中解脱出来,解决了低速信息输入与高速信息处理之间的矛盾,从而大大提高了工作效率。 7 \. M8 K2 Y. D: B# i 购买扫描仪时,附带的扫描软件中普遍都带有OCR识别功能,但是其识别率一般都很少令人满意,所以人们更乐于使用其它专业的OCR识别软件进行汉字识别。现在市场上有多种品牌的OCR产品,如清华紫光OCR、蒙恬识别王、尚书等,每种产品都标明自己最高能够达到的识别率。可是往往当用户购买了某种品牌的OCR软件后,在使用过程中却发现它的识别率根本达不到所标称的效果,于是就抱怨这种OCR软件不好。事实上,即使你使用的是识别率很高的OCR产品,识别效果可能仍然会不理想,原因在于使用扫描仪输入文本图像的时候,没有把扫描仪的相关参数设置到最佳状态。这些参数将直接影响输入图像的质量,不恰当的参数使图像无法满足OCR识别的需要,从而导致了OCR识别率下降。本文的目的就是提供给大家一个通过设置扫描仪参数来提高OCR识别率的方法。 % f1 V+ U! v; K; r: n# u0 y# a# J 2 o: x5 @$ D: ~1 R4 ^( Q+ y! {二、不要“最高”,只求“最佳” + e4 S0 t6 H" D; [3 n, O : E! C5 J3 F0 {% [+ d/ q8 h5 h 扫描分辨率——dpi(每英寸的像素数),它是影响OCR识别率的关键参数之一。扫描仪通常提供了可以进行设置的分辨率范围。随着扫描分辨率的提高,即每英寸像素点数的增多,其所表达的原图细节就更加丰富。对于被扫描的原始文本图像来说,随着扫描分辨率的提高,汉字的笔划就会更加接近原貌,各个笔划也能够比较好地被区分。然而是不是选取扫描仪可以支持的最高分辨率扫描文本图像就可以获得最高的OCR识别率呢?其实不然。太低的扫描分辨率所获得的信息往往满足不了OCR识别的需要,但过高的分辨率又会使生成的扫描数据过于庞大,这对于要进行大量汉字录入的情况来说显然是不可取的。到底选择什么样的分辨率才能够既获得理想的识别率又不至于占用太大的磁盘空间呢?通过以下实验分析,给出了选择扫描分辨率的一般方法。0 Q) P+ M* n# y; x3 ^. n$ {' J
本实验采用ColorTake 7730扫描仪对同一段宋体四号字以不同的分辨率进行扫描,然后用蒙恬识别王1.60版本的OCR软件进行汉字识别,得到表1所示的统计数据。$ M5 ]" k9 A- X q/ G
1 v+ j1 V" e, N E5 M9 x表1 不同分辩率下的OCR识别错误率和文件长度统计 & J9 V9 f2 |5 |9 C' o9 F$ Q* X: y. \* g: n4 h7 \+ Z1 l
从图1和图2中的错误率曲线和文件长度曲线可以清楚地看出,随着扫描分辨率的递增,OCR的识别错误率呈递减趋势,这是我们所希望的。但是同时,文件长度却按分辨率的平方大幅度增长,这是我们不希望的。因此选择一个能够得到理想OCR识别率同时使文件长度较小的扫描分辨率就是我们追求的目标。150dpi分辨率就是这样一个关键分辨率,小于它时识别率急剧下降,大于它时识别率则变化不大,而文件长度却正好相反。因此150dpi可以作为最佳扫描分辨率。请看150dpi和100dpi的扫描图像,以“应”字为例。 * C _% y: o4 N! K0 d
2 y' F+ Z, R* a. i
: }+ Z/ r" Q5 [- r- u( R3 l; M可以看出,当分辨率为100dpi时,“应”字的笔划多处断开,OCR没有正确识别出这个字;当分辨率提高到150dpi时,由于扫描仪采集了更多的信息,这个字的所有笔划都清晰完整,因此OCR正确识别出了这个字。像“应”这样100dpi识别不出,而150dpi能够识别出来的文字约占所有扫描字数的33.7%。对于大多数汉字,150dpi的分辨率已完全可以满足需要,但是对于有些汉字,还需要适当地提高扫描分辨率才能正确识别。以下分别是150dpi和200dpi“算”字的扫描图像。 - @" ^+ \) C: U# E6 D, q - ^( ]- L- s- k. b) E1 q) x+ t I E5 |
扫描分辨率为150dpi时,OCR没能正确识别这个字;将分辨率提高到200dpi后,这个字就被正确识别了。7 Q5 d x( {$ O, e7 X! a
通过上面的分析可以得出以下结论:在使用OCR进行汉字录入时,不应该选择最高扫描分辨率,而应该选择最佳扫描分辨率。在上述实验中的最佳分辨率是150dpi,这是由现有设备和条件决定的。大家在使用过程中,可根据实际情况确定最佳分辨率,确定的原则是错误率低于3%,具体操作方法是OCR识别后产生的文本中的红色错字数量可以被接受。以不同扫描分辨率扫描所得到的文件长度是不同的,若扫描分辨率增长A倍,则文件长度则会增长A2倍。计算公式如下,供大家参考。; Z3 e9 m: e m2 P2 ]7 ?3 G; T
' d ?* I% y3 X/ z/ U
如果条件发生变化,例如原始文本的字号较小,则可以适当提高扫描分辨率,反之字号较大,则可适当降低扫描分辨率。以上方法在处理大量文件时就能够显示出优越性。 g5 N+ u" }: h" n) W3 t0 h( A2 U% [6 }2 V7 w. r) o
三、扫描亮度设置也重要 , x. x* f: {7 G0 `% I 7 E( V6 D0 y; H0 S; E( ?7 u 除了扫描分辨率,扫描亮度也是影响OCR识别率的一个重要参数。准备输入计算机的文本看上去是白纸黑字,好像只有黑白两种颜色,但是经过扫描之后,它就变成了有多个灰度等级的图像。例如8位灰度级能表达256种灰度颜色,10位灰度级则能表达1024种灰度颜色。其中以代表白色的某个灰度级和代表黑色的某个灰度级为中心构成了两组数据,在灰度直方图上表现为两个“山峰”。OCR在识别汉字时就要求将这个“双峰”多灰度图像变为二值图像,调整亮度就是为了对图像进行二值化处理,也就是说在灰度区间[Lmin,Lmax]设定一个阈值(threshold)记为T,并且Lmin<T<Lmax,然后令图像中所有灰度值小于或等于T的像素为0(黑),所有灰度值大于T的像素为1(白),这样就完成了识别汉字的第一步工作。 7 R/ p7 h; @7 r% L" c 调整扫描亮度也即调整阈值T,其意义在于将一部分灰度等级的像素归于黑,再将另一部分灰度等级的像素归于白。调整阈值T的直观效果是:如果黑色取多了,将出现汉字的笔划粗壮,笔划多的部分连成一片,严重影响识别率;如果白色取多了,将出现汉字的笔划纤细,以至于出现断裂,正确识别汉字也是不可能的。为了正确选择阈值,扫描仪常常提供了灰度直方图供用户调整扫描亮度。灰度直方图是对图像的所有像素的灰度分布按灰度值的大小显示其出现频度的统计图。横轴表示灰度值,纵轴表示频度。所谓频度,即具有某一灰度值的像素在图像中出现的次数。7 E9 z" g* g( \4 g) ] s2 n6 k8 R
3 y0 u0 a# m$ H2 N7 w7 Y4 X/ g4 D9 u- Z9 o. K
对于原本就具有二值倾向的多灰度值图像来说,选择一个合适的阈值比较容易。具有二值倾向的图像在灰度直方图上呈现出两峰一谷的特征,如左图所示。这时若取谷底处的灰度值作为阈值T,一般可以得到较好的效果。很多扫描软件都会在对图像进行预览后自动选取一个直方图低谷处的值作为阈值。如果用此T作为阈值处理成的二值图像效果不佳,可以适当的修改T重新进行二值化。修改的原则是,若二值图像上失去的特征过多(如轮廓严重残缺等),则适当地增大T值;若二值图像上有较多的冗余信息时(如轮廓线太粗,噪音点较多等),则应适当的减小T值。这样做往往可以获得满足OCR识别要求的二值图像。 - `3 o7 |. z3 s* Z1 h" c* s ; C; U6 S2 _5 h1 X四、小结 ' R8 m0 Z/ c7 ?& ]' H4 k! _7 H 5 i( y9 b) @4 M* ^5 T$ y5 x4 h/ g/ U+ e5 B/ \" ]$ z% e
综上所述,OCR的识别率不仅只取决于OCR软件本身的品质,在很大程度上还取决于供OCR识别用的图像的质量。最后,笔者对选择扫描分辨率和扫描亮度提出以下几点建议:+ j: a. F: O3 M( j/ W4 V. Z
1、以不同的扫描分辨率对同一段文本图像进行扫描,用某一种OCR软件对不同扫描分辨率下的图像进行识别,找到一个速度较快、文件较小、识别率可以接受的最佳扫描分辨率X。记录下字体字号等各种条件。 1 a1 j& U/ j& I 2、以后遇到相同条件时可使用扫描分辨率X。如果要扫描的文字的笔划比实验时的文字的笔划多,或者字号小,那么要在分辨率X的基础上适当提高分辨率,反之则降低分辨率。 ! b# ~3 ?: O m# H/ f 3、扫描亮度(阈值T)一般选择灰度直方图谷底处的灰度值最佳,观察扫描后的图像以汉字的笔划较细但又不断开为原则。# ]1 p2 g: a T9 P0 B F1 P3 T1 R* Z
4、纸张的质量或颜色也可以影响OCR识别结果,如造成黑点或黑斑,这时可适当减小扫描亮度;如果扫描后的图像中汉字轮廓严重残缺时,则可以适当增加扫描亮& q6 i! o C h/ w9 y( O1 U( B- O' N" X