【问题标题】:How to identify single digits from image?如何从图像中识别单个数字?
【发布时间】:2021-08-18 02:04:00
【问题描述】:

我正在尝试根据其内容对图像进行分类。例如,我有很多如下图像,其中将包含一些内容——在本例中为数值。我已经尝试过这里提出的 OpenCV 和 Pytesseract OCR 解决方案:https://stackoverflow.com/a/60161328/7250310

但是,此解决方案不适用于我的图像,并且未检测到内容。以下是我的示例图片:

图片一:

图 2:

图 3:

图 4:

您还有其他想法来实现这一目标吗?基本上图像 1 应该输出为1,等等。

【问题讨论】:

    标签: python opencv image-processing ocr python-tesseract


    【解决方案1】:

    这种简单的方法至少适用于所呈现的四个图像:

    import cv2
    import pytesseract
    
    images = ['4sXGS.jpg', 'Nizki.jpg', 'T0EM8.jpg', 'g2fY7.jpg']
    
    for img in images:
    
        img = cv2.imread(img, cv2.IMREAD_GRAYSCALE)
        img = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY_INV)[1]
    
        text = pytesseract.image_to_string(img, config='--psm 10')
        text = text.replace('\n', '').replace('\f', '')
        print(text)
    

    输出:

    1
    2
    3
    4
    

    单个步骤是:

    1. 将图像读取为灰度。
    2. 使用Otsu's method对图像进行反向二进制阈值。
    3. 使用-psm 10 选项(单个字符)运行pytesseract。也许还可以添加所描述的白名单,仅用于识别数字。

    警告:我使用来自 Mannheim University Library 的特殊版本的 Tesseract。

    ----------------------------------------
    System information
    ----------------------------------------
    Platform:      Windows-10-10.0.19041-SP0
    Python:        3.9.1
    PyCharm:       2021.1.1
    OpenCV:        4.5.2
    pytesseract:   5.0.0-alpha.20201127
    ----------------------------------------
    

    【讨论】:

    • 谢谢分享。是否有我可以安装的特殊版本的 mac 版本?我用普通的 tesseract 运行相同的代码,但它不适用于数字 1 图像。
    • @Fazal 不幸的是,我对此无法给出任何建议。 “特殊”主要是指他们构建了自己的 Windows 安装程序这一事实。底层源代码应该是通用(或当前)Tesseract 5.0.0.0-alpha。也许搜索该版本的 mac OC 构建说明!?你的 Tesseract 版本是什么?
    • 4.1.1 是我安装的版本。我试图找到 mac oc build 找不到它。也许对我来说太复杂了。
    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 2016-10-18
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多