gpt4 book ai didi

python - 为 OCR 对齐文本

转载 作者:太空狗 更新时间:2023-10-29 21:22:00 26 4
gpt4 key购买 nike

我正在根据历史记录创建一个数据库,这些记录是我从书中拍摄的页面(+100K 页)。在对每个页面进行 OCR 之前,我编写了一些 python 代码来进行一些图像处理。由于这些书中的数据没有以格式良好的表格形式出现,我需要将每一页分成行和列,然后分别对每一部分进行 OCR。

其中一个关键步骤是对齐图像中的文本。

例如,这是一个需要对齐的典型页面: page to align

我找到的一个解决方案是水平涂抹文本(我使用的是 skimage.ndimage.morphology.binary_dilation)并找到使水平维度上的白色像素总和最大化的旋转。

这工作正常,但每页大约需要 8 秒,考虑到我正在处理的页面量,这太多了。

您是否知道更好、更快地完成文本对齐的方法?

更新:

我使用 scikit-image 实现图像处理功能,使用 scipy 最大化水平轴上的白色像素数。

这是我以前处理此问题的 Jupyter notebook 的 html View 的链接。该代码使用了我为该项目编写的模块中的一些函数,因此它不能单独运行。

笔记本链接(保管箱):https://db.tt/Mls9Tk8s

更新 2:

这是原始原始图像(投递箱)的链接:https://db.tt/1t9kAt0z

最佳答案

前言:我没有用python做过多少图像处理。我可以给你一个图像处理的建议,但你必须自己用 Python 实现它。您只需要一个 FFT 和一个极坐标变换(我认为 OpenCV 有一个 in-built function for that ),所以这应该很简单。

您只发布了一张示例图片,所以我不知道这是否适用于其他图片,但对于这张图片,傅立叶变换可能非常有用:只需将图片填充为 2 的很好的幂(例如 2048x2048),你会得到这样的傅立叶频谱:

enter image description here

我发布了傅里叶变换的直观解释 here ,但简而言之:您的图像可以表示为一系列正弦/余弦波,并且大多数“波”与文档方向平行或垂直。这就是为什么您会在大约 0°、90°、180° 和 270° 看到强烈的频率响应。要测量准确的角度,您可以对傅立叶光谱进行极坐标变换:

enter image description here

然后简单地取列均值:

enter image description here

该图中的峰值位置在 90.835°,如果我将图像旋转 -90.835 模 90,方向看起来不错:

enter image description here

就像我说的,我没有更多的测试图像,但它适用于图像的旋转版本。至少它应该缩小搜索空间以使用更昂贵的搜索方法。

注1:FFT速度很快,但对于较大的图像显然需要更多时间。遗憾的是,获得更好角度分辨率的最佳方法是使用更大的输入图像(即在源图像周围使用更多的白色填充。)

注意 2:FFT 实际上返回一个图像,其中“DC”(上面频谱图像的中心)位于原点 0/0。但是如果你把它移动到中心,旋转属性会更清楚,并且它使极坐标变换更容易,所以我只展示了移动的版本。

关于python - 为 OCR 对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com