如何从图像中识别单个数字?

Posted

技术标签:

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

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

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

图片一:

图 2:

图 3:

图 4:

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

【问题讨论】:

【参考方案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

单个步骤是:

    将图像读取为灰度。 使用Otsu's method对图像进行反向二进制阈值。 使用-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 找不到它。也许对我来说太复杂了。

以上是关于如何从图像中识别单个数字?的主要内容,如果未能解决你的问题,请参考以下文章

数字识别建议

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

训练 Tesseract 3 从燃气表的真实图像中识别数字

Google Vision API 无法识别个位数

用opencv定位和识别数字如何识别呢,急求~~~~~~~~~