我试着从附件中提取号码

[Image having number

但我没有得到数字8作为输出.我try 了不同的PSM值,以及6,10等.

这就是我目前所拥有的:

image = cv2.imread(image_path)
if(image is not None):
# Convert the image to grayscale
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # Use OCR to extract text from the image
    extracted_text = pytesseract.image_to_string(gray, config='--psm 10 -c tessedit_char_whitelist=0123456789')

推荐答案

即使图像看起来很适合OCR,但垂直线上有一些阴影,这对检测是有害的.我做了一些阈值,最终得到了这个图像:

mask

我把这个输入到魔方,我得到了"8":

import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract-OCR/tesseract.exe"
im = cv2.imread("8.png") # read
b,g,r = cv2.split(im) # split
mask = (b>200)*(r<200)*(g<200) # threshold
text = pytesseract.image_to_string(mask, config='-l eng --psm 10') # use 
print(text) # print, results is "8"

当然,如果涉及其他 colored颜色 ,这将失败.如果你有这种情况,你可以张贴更多的图片,以便我可以调整代码?

Python-3.x相关问答推荐

Python根据阈值对数字进行分组

将f-字符串放置在f-字符串内

将列表转换为 pandas 数据框,其中列表包含字典

如何在当前测试中使用fixture 转换后的数据进行参数化?

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

GEKKO 在没有不等式的模型中抛出不等式定义错误

无法提出给定 for 循环的原因 (Python 3.11)

为什么 return node.next 会返回整个链表?

通过附加/包含多个列表来创建 nDimensional 列表

如何在python中将列表转换为其他格式

在两个数据框之间查找相等的列

ValueError:FixedLocator 位置的数量 (5),通常来自对 set_ticks 的调用,与刻度标签的数量 (12) 不匹配

Tkinter AttributeError:对象没有属性'tk'

Python3四舍五入到最接近的偶数

如何使用 asyncio 添加连接超时?

Python:在 map 对象上调用列表两次

如何将numpy数组图像转换为字节?

类方法和实例方法同名

map 对象不是 JSON 可序列化的

如何从 Base64 转换为字符串 Python 3.2