查找图像中的已知文本(引导式OCR)

时间:2015-02-23 22:28:42

标签: image-processing ocr

我正在寻找一种在图像中定位已知文字的方法。

具体来说,我正在尝试创建一个工具,将一组扫描页面转换为支持搜索和复制+粘贴的PDF。我理解这通常是如何完成的:OCR页面,保留文本的位置,然后将文本作为不可见的图层添加到PDF。 Acrobat内置了此功能,tesseract可以输出hOCR文件(包含已识别的文本及其位置),可由hocr2pdf用于生成文本图层。

不幸的是,我的源图像质量相当低(最多150 DPI,有大量的JPEG伪像,以及一些文本背后的非实体背景),导致相当差的OCR结果。但是,我确实有每页显示的文本副本(无图片和布局)。

将已知文本与扫描页面上的位置相匹配似乎更容易准确,但我没有发现内置此功能的任何软件。如何利用现有软件来实现这一目标?

编辑:文字的大小和字体各不相同,但文章的段落是一致的。

1 个答案:

答案 0 :(得分:1)

让我想到的想法是互相关。因此,我会将您知道的单词列表放在页面上,并一次一个地渲染到画布上,以创建该单词的图片。您需要使用与文档中的单词类似的字体和大小 - 这是我在评论中提到的。然后,我将对扫描图像运行该图像的图像的标准化互相关,以查看它出现的位置。我会用ImageMagick完成所有这一切,它可用于Windows和OSX(在OS X上使用homebrew)并包含在大多数Linux发行版中。

所以,让我们看一下你问题第二段的屏幕截图,找一下pretty这个词 - 你提到非常糟糕的OCR

首先,您需要将单词pretty渲染到白色背景上。命令将是这样的:

convert -background white -fill black -font Times -pointsize 14 label:pretty word.png

<强>结果:

enter image description here

然后使用来自here的Fred Weinhaus的脚本执行标准化的互相关:

normcrosscorr -p word.png scan.png correlation-result.png
Match Coords: (504,30) And Score In Range 0 to 1: (0.999803)

你可以看到比赛的坐标是504,30。

<强>结果: enter image description here

另一个想法

另一个想法可能是使用Google的Tesseract-OCR并将标准字典替换为包含您正在处理的页面上的字词的文本文件...