如何从图像中识别单个数字?
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期