同一段文字,有人识别全对,有人识别出来一半是别字。差别几乎不在工具 —— 用的是同一套识别接口,差距全在送进去的那张图。按影响从大到小排六个因素,前三个在你按下快门前就已经决定了结果。

一、有效分辨率:字有多少像素可用

不是图片多大,是一个字占多少像素。站点给的口径是单行文字高度 10~50 像素、图片长边不小于 1000 像素。一张 4000 像素的整页照片里,正文可能只有 18 像素高,完全够用;一张 800 像素宽的缩略图里,正文只有 6 像素,神仙也认不出。

补救只有一个方向:靠近再拍,或者让对方发原图。放大已经压缩过的图不会增加信息,只会把锯齿摊开。

二、倾斜与形变:字被拉歪了

手机斜着拍,同一行字的两端高度不一样,笔画被透视压缩。这类错误的典型表现不是错字,而是整行漏识。

能救的办法:拍的时候正对纸面;已经拍歪的,先在手机上裁正,或用 手机拍的文件歪、有阴影、发灰:怎么弄成平整白底的扫描件 里的做法处理成平整白底再识别。

三、对比度:淡字、反光、阴影

识别靠的是前景与背景的差别。铅笔淡字、复印件的第三代、纸面反光、手影盖住一角,都会让局部区域的字和背景糊在一起。热敏纸小票放半年字迹变淡,也是同一类问题。

补救:换个角度避开反光、开闪光灯反而常常更糟(会在纸上打出一块白斑),正确做法是在均匀光线下、从稍高的位置垂直拍。

四、压缩与二次传图

微信传图、网页下载、截图再截图,每一轮有损压缩都会在笔画边缘留下块状噪点。肉眼看着没问题,识别时容易把「未」认成「末」、把「0」认成「O」。

能拿原图就不要拿转发图。这条在报价格式、合同条款这类细节多的内容上尤其明显。

五、内容类型:走对入口比调参数重要

这是最常被忽略的一条。手写、印刷体、表格是三套不同的模型:

六、本来就认不了的东西

印章压住的字、数学公式、竖排古文、艺术字、手写签名。这几项不是准确率高低的问题,是不支持。不要指望换个工具就能成,该手工录就手工录。

一个 30 秒的定位法

识别不理想时,先做这件事:把图片放大到 100%,用肉眼盯着出错的那一行看。如果你自己都要辨认一下才确定是什么字,识别出错就是正常的;如果你一眼就看得清清楚楚而机器认错了,才轮到怀疑入口选错或者内容属于第六类。

最后要说实话:印刷体、对比度正常的文档截图通常可用,但没有任何 OCR 能保证全对。金额、编号、姓名、日期这四类内容,无论识别得多漂亮都要逐字核对。