如何制作 OCR 程序? [关闭]
Posted
技术标签:
【中文标题】如何制作 OCR 程序? [关闭]【英文标题】:How do I make an OCR Program? [closed] 【发布时间】:2011-09-26 20:07:03 【问题描述】:我想制作一个将图像作为输入并输出文本的程序。现在我知道我可以使用神经网络将单个字符的图像转换为该字符。困难的部分是:给定一个带有文本的图像,我将如何在每个单独的字符周围生成所有矩形?我可以用什么方法来做到这一点?
【问题讨论】:
【参考方案1】:一种基本方法是制作黑色像素的直方图。第一:将所有像素投影在一条线上。直方图中的深谷表示线条之间的分离(如果纸张可能倾斜,请尝试不同的角度)。然后,每行(或每页,如果您知道字体是等宽字体)将像素投影到水平直方图上。这将为您提供字符间空格的强烈指示。至少,这会为您提供一个平均字符高度和宽度的值,这将在接下来的步骤中为您提供帮助。
之后,您需要注意字距调整(字符重叠的地方)。找到连接的像素,可能首先对图像进行膨胀或腐蚀以补偿扫描伪影。
根据扫描图像的质量,您可能需要使用更先进的技术,但这会让您继续前进。
【讨论】:
这很有趣,因为虽然我认为你描述的方法有时会很好用,但它不能学习?可以训练神经网络以更好地阅读单个符号,但是一旦它变得完美,使用你的想法,我觉得它可能会受到程序的这一部分的限制。你认为是这样还是我判断错误? 啊,我有点误读了你的问题。传统的方法是做 1)图像增强 2)分割 3)字符识别(使用 NN) 4)使用上下文信息(字典查找或应用统计数据)。您基本上可以选择使用 NN 进行分割或使用 NN 组合 2) 和 3)。后者将具有挑战性,但具有潜在的优势。如果你想将 NN 应用于分割,你必须想出好的特征。使用直方图山谷可能就是其中之一(我自己没有这样做,所以真的无法预测结果)。 恭喜!您几乎重新发明了霍夫变换。【参考方案2】:这听起来不像是人工智能,听起来你在谈论 OCR:
http://en.wikipedia.org/wiki/Optical_character_recognition
见谷歌正方体
http://code.google.com/p/tesseract-ocr/
编辑未经编辑的问题是关于人工智能的。
【讨论】:
@quanta AI 和 OCR 不是一回事。称它为 AI,你描述的是错误的东西。【参考方案3】:对我来说,这个问题本身似乎并不明确。
在谈到 OCR 时,会在这里留下几篇文章,它们可能会有所帮助(它们至少对我有帮助):
Improve OCR Accuracy How to use image preprocessing to improve the accuracy of Tesseract如上所述,tesseract 是一个很好的 OCR 开源 python 库(我个人也使用的那个)。您可以采取的其他方法是通过sklearn
您可能还想查看this *** post。
我也很确定你可以使用researchgate 来检查那里的任何文件(我找到了一些,只是不确定这是否是你需要的)
我认为上述通用答案适合通用问题。
【讨论】:
您好,如果问题不清楚,通常在 SO 上,那么最好在明确之前不要回答。如果您认为已经发布了一个可以解决该问题的答案,那就更是如此。以上是关于如何制作 OCR 程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章