2011-04-13 33 views
17

我正在将扫描文档的大量集合数字化,并使用Tesseract 3作为我的OCR引擎。它的输出质量平庸,因为它经常在实际文本之前和之后产生垃圾字符,并在文本中产生拼写错误。OCR纠错算法

对于前面的问题,似乎必须有策略来确定哪些文本实际上是文本,哪些文本不是(大部分文本是人的名字,所以我寻找的解决方案除了看词典中的单词)。

对于错字的问题,大部分错误从字母几个错误分类干(代l1,并且I对彼此,例如),而且好像应该有方法来猜测哪些单词拼写错误(因为英语中没有太多单词在它们中间有一个“1”),并且猜测适当的修正是什么。

这个空间的最佳实践是什么?有这样的事情的算法的免费/开源实现?谷歌已经收到了大量的论文,但没有多少具体。如果没有可用的实施方案,那么许多论文中的哪一个将成为一个好的起点?

+0

我有这样的问题,没有任何经验,但请你分享索姆e你找到的链接?他们会做出非常有趣的阅读。 – 2011-04-14 08:15:09

+6

@coffee这里有几个:[非交互式OCR纠正千兆级数字化项目](http://www.springerlink.com/content/l2724747mt78039l/),[使用学习的OCR错误的低成本校正多引擎环境](http://www.google.com/research/pubs/archive/35525.pdf),[在上下文中自动OCR纠错的统计方法](http://www.ldc.upenn .edu/acl/W/W96/W96-0108.pdf)和[文凭论文:OCR错误的无监督后校正](http://www.l3s.de/~tahmasebi/Diplomarbeit_Niklas.pdf)。 – 2011-04-14 14:23:04

+0

@coffee这些主要处理修正拼写错误,而不是消除输出中的非文本。 – 2011-04-14 14:23:23

回答

0

对你有用的东西是尝试this free online OCR并将结果与​​你的结果进行比较,以查看是否通过播放图像(例如向上/向下缩放)来改善结果。

我使用它作为使用tesseract自己(使用OpenCV修改图像后)自己得到的结果的“上限”。

11

对于“确定哪些文本实际上是文本和哪些文本不是”,您可能需要查看来自开发Tesseract(ISRI)的同一部门的rmgarbage。我写了一个Perl implementation,还有一个Ruby实现。对于1对l问题,我正在试验ocrspell(同样来自同一部门),其中their original source可用。

我只能发布两个环节,因此缺少的是:

  • ocrspell:在dx.doi.org]
  • rmgarbage进入 “10.1007/PL00013558”:搜索“垃圾自动删除字符串在OCR文字:一种实现”
  • ruby implementation:搜索‘docsplit textcleaner’