我必须从PDF文档到OCR表。我编写了简单的Python + opencv脚本来获取单个单元格。之后出现了新的问题。文本是抗锯齿的,而不是高质量的。 tesseract的识别率非常低。我试图用自适应阈值处理预处理图像,但结果并没有好多少。 我已经尝试过ABBYY FineReader的试用版,确实它提供了很好的输出,但我不想使用非自由软件。 我想知道是否有一些预处理可以解决问题,或者是否有必要编写和学习其他OCR系统。
http://oi60.tinypic.com/ztzsrq.jpg http://i57.tinypic.com/xmpcm9.png
答案 0 :(得分:2)
如果仔细查看抗锯齿文本示例,您会发现边缘包含大量红色和蓝色:
这表明抗锯齿是在您的计算机内部进行的,该计算机使用subpixel rendering来优化LCD显示器的效果。
如果是这样,以更高的分辨率提取文本应该很容易。例如,您可以使用ImageMagick通过使用如下命令行以300 dpi从PDF文件中提取图像:
convert -density 300 source.pdf output.png
您甚至可以尝试在自己喜欢的查看器中加载PDF并将文本直接复制到剪贴板。
<强>附录:强>
我尝试将示例文本转换回原始像素并应用评论中提到的缩放技术。结果如下:
原始图片:
缩放300%并应用简单阈值后:
智能缩放和阈值处理后:
正如您所看到的,有些字母仍然有点格格不入,但我认为使用Tesseract读取此字母的可能性更大。