【问题标题】:How do I make an OCR Program? [closed]如何制作 OCR 程序? [关闭]
【发布时间】:2011-09-26 20:07:03
【问题描述】:

我想制作一个将图像作为输入并输出文本的程序。现在我知道我可以使用神经网络将单个字符的图像转换为该字符。困难的部分是:给定一个带有文本的图像,我将如何在每个单独的字符周围生成所有矩形?我可以用什么方法来做到这一点?

【问题讨论】:

    标签: neural-network ocr


    【解决方案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 时,会在这里留下几篇文章,它们可能会有所帮助(它们至少对我有帮助):

    如上所述,tesseract 是一个很好的 OCR 开源 python 库(我个人也使用的那个)。您可以采取的其他方法是通过sklearn

    您可能还想查看this stackoverflow post

    我也很确定你可以使用researchgate 来检查那里的任何文件(我找到了一些,只是不确定这是否是你需要的)

    我认为上述通用答案适合通用问题。

    【讨论】:

    • 您好,如果问题不清楚,通常在 SO 上,那么最好在明确之前不要回答。如果您认为已经发布了一个可以解决该问题的答案,那就更是如此。
    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2023-01-19
    相关资源
    最近更新 更多