25

我正在尝试使用 Tessaract 从收据和账单中提取数据,我正在使用 tesseract 3.02 版本。

我只使用英文数据,输出准确率仍然在 60% 左右。

是否有任何可用的训练数据,我只是在 tessdata 文件夹中替换

4

4 回答 4

30

这是作为“典型示例文件”提供的图像 nicky:

典型示例文件

看着它,我会明确地说:“算了吧,nicky!你不能训练 Tesseract 从这种类型的图像中识别 100% 的文本!”

但是,您可以通过这种类型的收据训练自己使用iPhone 3GS(即用于示例图片的设备)拍摄更好的照片。这里有一些提示:

  • 不要使用深色背景。改用白色。
  • 不要让收据纸崩溃。把它理顺。
  • 不要将收据松散地放在不平整的地下。将其固定在平面上:
    • 要么把它放在一张白纸上,然后在上面放一个玻璃压板。
    • 或者使用一些胶水将其平粘在一张白纸上,不要有任何弯曲的边缘或角落。
  • 不要使用像 640x480 像素这样的低分辨率(如示例图片所示)。请改用更高的像素,例如 1280x960 像素。
  • 不要使用标准曝光。将相机设置为使用极高的对比度。你希望字母是黑色的,白色背景是真正的白色(你不需要图片中的灰色......)
  • 尝试使 10-12 pt 字体的任何字符使用大约 24-30 像素的高度(即,将图像设置为大约 300 dpi 以实现 100% 缩放)。

也就是说,类似下面的 ImageMagick 命令可能会在一定程度上提高 Tesseract 的识别率:

convert                               \
   http://i.stack.imgur.com/q3Ad4.jpg \
  -colorspace gray                    \
  -rotate 90                          \
  -crop 260x540+110+75 +repage        \
  -scale 166%                         \
  -normalize                          \
  -colors 32                          \
   out1 .png

它产生以下输出:

OCR 的 ImageMagick 优化

你甚至可以在上面的命令中添加类似-threshold 30% 最后一个命令行选项的东西来获得这个:

在此处输入图像描述

(您应该对值进行一些变化以30%调整结果......我没有时间这样做。)

于 2012-08-29T19:28:25.873 回答
12

使用 tesseract 从收据中获取准确信息并非不可能。您将需要在 Tesseract 旁边添加图像过滤器和一些其他工具,例如 OpenCV、NumPy ImageMagick。Franck Chastagnol 在 PyCon 2013 上做了一个演讲,他描述了他的公司是如何做到的。

这是链接: http: //pyvideo.org/video/1702/building-an-image-processing-pipeline-with-python

于 2013-05-08T10:28:20.837 回答
3

在使用 Tesseract 对文本进行 OCR 之前,您可以获得更清晰的后处理图像。尝试使用背景表面阈值 (BST) 技术,而不是其他简单的阈值方法。您可以在此处找到有关该主题的白皮书。

有一个适用于 OpenCV 的 BST 实现,效果很好https://stackoverflow.com/a/22127181/3475075

于 2015-01-09T21:27:13.670 回答
0

我需要完全相同的东西,我尝试了一些图像优化来改善输出

你可以在这里找到我对 tessaract 的实验

https://github.com/aryansbtloe/ExperimentWithTesseract

于 2013-05-28T11:24:08.147 回答