Open source 如何提高OCR结果

Open source 如何提高OCR结果,open-source,ocr,tesseract,Open Source,Ocr,Tesseract,我试图改进开源OCR软件的结果。我正在使用tessaract,因为我发现它仍然比gocr产生更好的结果,但由于输入质量差,它存在巨大的问题。因此,我尝试使用在互联网上找到的各种工具对图像进行预处理: 拆开纸张 Fred的ImageMagick脚本:TEXTCLEANER 手动使用GIMP 但我不能用这个糟糕的测试文档获得好的结果:(实际上只是为了测试,我不需要修改这个文件的内容) 此在线服务与此测试文档配合得非常好: 我想知道是否可以使用智能预处理来获得与tesseract类似的结果。与

我试图改进开源OCR软件的结果。我正在使用tessaract,因为我发现它仍然比gocr产生更好的结果,但由于输入质量差,它存在巨大的问题。因此,我尝试使用在互联网上找到的各种工具对图像进行预处理:

  • 拆开纸张
  • Fred的ImageMagick脚本:TEXTCLEANER
  • 手动使用GIMP
但我不能用这个糟糕的测试文档获得好的结果:(实际上只是为了测试,我不需要修改这个文件的内容)

此在线服务与此测试文档配合得非常好:


我想知道是否可以使用智能预处理来获得与tesseract类似的结果。与商用OCR引擎相比,开源OCR引擎真的那么糟糕吗?甚至谷歌也使用tesseract来扫描文档,所以我期待更多…

tesseract的识别精度比最好的商业产品(Abbyy FineReader)的精度稍低,但由于其本质,它更灵活。 这种灵活性有时需要一些预处理,因为Tesseract不可能管理每种情况。 实际上是谷歌使用的,因为谷歌是它的主要赞助商

您可以做的第一件事是尝试展开文本,以便至少有20个像素宽的字符或更多。由于Tesseract使用字符边界的主要部分作为特征,因此与其他算法相比,它需要具有更大的字符大小


您可以尝试的另一件事,总是参考您提到的测试文档,是使用自适应阈值方法对图像进行二值化(在这里您可以找到一些关于这方面的信息),因为照明中存在一些变化。Tesseract会在内部对图像进行二值化,但如果它无法做到这一点,则可能会出现这种情况(与这里的示例类似,您还可以在这里找到一些其他有用的信息)

Tesseract的识别精度略低于最佳商业图像(Abbyy FineReader)的精度,但由于它的性质,它更灵活。 这种灵活性有时需要一些预处理,因为Tesseract不可能管理每种情况。 实际上是谷歌使用的,因为谷歌是它的主要赞助商

您可以做的第一件事是尝试展开文本,以便至少有20个像素宽的字符或更多。由于Tesseract使用字符边界的主要部分作为特征,因此与其他算法相比,它需要具有更大的字符大小


您可以尝试的另一件事,总是参考您提到的测试文档,是使用自适应阈值方法对图像进行二值化(在这里您可以找到一些关于这方面的信息),因为照明中存在一些变化。Tesseract会在内部对图像进行二值化,但如果它无法做到这一点,则可能会出现这种情况(与这里的示例类似,您还可以在这里找到一些其他有用的信息)

提高分辨率可以改善结果。我玩了自适应阈值,它解决了光线不均匀的问题,但有白色区域的问题。我从Fred的ImageMagick脚本中找到了2种颜色,以提供更好的结果。我当前的命令如下:convert aBrG8w2_700b.jpg-resize 1600-对比度-对比度-对比度+抖动-颜色2-颜色空间灰色-对比度拉伸10%test.png&&tesseract test.png test&&cat test.txt更好,但仍然不可用。有人有更好的方法吗?区域的问题是,当使用自适应阈值时,通常意味着将图像分割成小块,然后单独对每个块进行二值化。因此,在某些块中(如您所说的白色区域),前景(文本)和背景将不同时显示,在这种情况下,二值化失败。我不知道您使用的算法有多灵活,但解决方案是从每个块的阈值中减去一个常数,这样即使没有文本,阈值也会低于白色背景。无论如何,即使您使用的阈值算法不灵活,移除这些工件应该不是什么大问题。一种方法可以是观察每个斑点的几何特性。我想了解具体点为什么Tesseract比任何商业OCR都好。我不知道真相,这只是一个简单的想法,因为它在不断进化,背后有谷歌,我认为有大量数据可供处理:)无论如何,一个具体的问题肯定是成本。关于性能(我现在正在阅读一些比较),Abbyy FineReader通常更精确,而Tesseract似乎更灵活(例如,在本测试中,识别图像标题,而Abbyy无法做到)。也许“更好”不是正确的词,你同意我编辑我的答案吗?提高分辨率可以改善结果。我玩了自适应阈值,它解决了光线不均匀的问题,但有白色区域的问题。我从Fred的ImageMagick脚本中找到了2种颜色,以提供更好的结果。我当前的命令如下:convert aBrG8w2_700b.jpg-resize 1600-对比度-对比度-对比度+抖动-颜色2-颜色空间灰色-对比度拉伸10%test.png&&tesseract test.png test&&cat test.txt更好,但仍然不可用。有人有更好的方法吗?区域的问题是,当使用自适应阈值时,通常意味着将图像分割成小块,然后单独对每个块进行二值化。因此,在某些块中(如您所说的白色区域),前景(文本)和背景将不同时显示,在这种情况下,二值化失败。我不知道您使用的算法有多灵活,但解决方案可以是从阈值o中减去一个常数