Python 将1和0检测为L和O的细分

Python 将1和0检测为L和O的细分,python,image-processing,ocr,tesseract,python-tesseract,Python,Image Processing,Ocr,Tesseract,Python Tesseract,在该图像中,tesseract检测到文本为LOOOPCS,但它是1000PCS。我使用的命令是 tesseract "item_04.png" stdout --psm 6 我尝试了所有psm值0到13 根据其他博客的建议以及SO和internet上的问题,还尝试了图像剪辑和阈值分割 还尝试了-c tessedit\u char\u whitelist=pcs012456789,但结果是00PCS。 但我买不到1000件。有人能试试这些让我知道我错过了什么吗 编辑: 根据@nathanc

在该图像中,tesseract检测到文本为
LOOOPCS
,但它是
1000PCS
。我使用的命令是

tesseract "item_04.png" stdout --psm 6
我尝试了所有psm值0到13

根据其他博客的建议以及SO和internet上的问题,还尝试了图像剪辑和阈值分割

还尝试了
-c tessedit\u char\u whitelist=pcs012456789
,但结果是00PCS。 但我买不到1000件。有人能试试这些让我知道我错过了什么吗

编辑:
根据@nathancy给出的建议,尝试使用-
cv2.THRESH\u BINARY\u INV+cv2.THRESH\u OTSU
,它在1和0上工作,但在下图中失败。它被检测为LL8gPcs:

您需要对图像进行预处理。一种简单的方法是先设置大津阈值,然后反转图像,使文本为黑色,背景为白色。以下是使用PyteSeract OCR和psm 6处理的图像和结果

结果

1000PCS
代码


谢谢你能用外行的话告诉我0和255值是如何影响的吗。以及为什么cv2.THRESH\u BINARY\u INV+cv2.THRESH\u OTSU被添加到编辑。。。此图像成功,但下一个图像失败(两个剪辑来自同一个图像),因此没有太大的差异,它会自动计算阈值。它说如果超过阈值,我们将像素设置为
255
。我们使用
0
告诉它使用大津。谢谢。。我做了一个编辑。。此方法适用于第一个图像,但不适用于其他类似图像。。有什么建议吗?你可以试着放大图像。这对我有用:
导入imutils
然后
image=imutils.resize(image,width=500)
import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# Grayscale, Otsu's threshold
image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Invert and perform text extraction
thresh = 255 - thresh
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.waitKey()