OCR错误纠正算法

23

我正在数字化一大批扫描文件,使用Tesseract 3作为OCR引擎。它的输出质量一般,经常会在实际文本前后产生垃圾字符和拼写错误。

对于前一个问题,似乎有确定哪些文本是实际文本以及哪些不是的策略(其中很多文本是人名等内容),因此我正在寻找除了在字典中查找单词之外的其他解决方案。

对于拼写问题,大多数错误都源自几个字母的误分类(例如将 l1I 相互替换),因此应该存在猜测拼写错误的单词(因为英语中没有太多单词中间有“1”的情况)以及猜测适当修正的方法。

在这个领域中,最佳实践是什么?是否有可用于此类任务的免费/开源算法实现?Google搜索结果有很多论文,但并没有太多具体信息。如果没有可用的实现,那么哪些论文是一个好的起点?


1
@coffee 这些大多数都涉及修正错字,而不是消除输出中的非文本内容。 - Andrew Pendleton
2个回答

14
对于“确定哪些文本是实际文本,哪些不是”,您可能需要查看与Tesseract(ISRI开发的)相同部门的rmgarbage。我编写了一个Perl实现,还有一个Ruby实现。对于1与l的问题,我正在尝试使用ocrspell(同一部门再次提供),其中他们的原始源代码可用。
我只能发布两个链接,所以缺少的链接如下:
  • ocrspell:在dx.doi.org输入“10.1007/PL00013558”
  • rmgarbage:搜索“Automatic Removal of Garbage Strings in OCR Text: An Implementation”
  • ruby implementation:搜索“docsplit textcleaner”

-1

对你有用的一件事是尝试这个免费的在线OCR,并将其结果与你自己的结果进行比较,看看通过调整图像(例如缩放)是否可以改善结果。

我将其用作使用OpenCV修改图像后,我自己使用tesseract时应该得到的结果的“上限”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接