不可理解地清除图像后,Tesseract无法识别图像

2024-09-24 02:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想ocr两位数的图像后,删除正确的数字为良好的准确性。 示例)OriginalModified

图像为PNG文件(52*26px),背景色为(192255),每个数字的颜色不同。你知道吗

但令人惊讶的是,在删除了正确的数字后,tesseract无法识别这个数字。你知道吗

结果:

original:60
left:

from PIL import Image
from pytesseract.pytesseract import *

im=Image.open('NA2WK.png')

#calculate far left xpos of color
color={}
for i in range(52):
    for j in range(26):
        if im.load()[i,j]!=(192,192,192,255):
            if color.get(im.load()[i,j])==None:
                color[im.load()[i,j]]=9999
            if i<color[im.load()[i,j]]: 
                color[im.load()[i,j]]=i

#get color of left character
if color.values()[0]<color.values()[1]:
    left=color.keys()[0]
    right=color.keys()[1]
else:
    left=color.keys()[1]
    right=color.keys()[0]   

#left processing
imleft=Image.open('test.png')
pix=imleft.load()
for i in range(52):
    for j in range(26):
        if pix[i,j]==(192,192,192,255) or pix[i,j]==right:
            pix[i,j]=(255,255,255,255)
        else:
            pix[i,j]=(0,0,0,255)

print('original:'+image_to_string(im))
print('left:'+image_to_string(imleft))

Tags: in图像imagerightforifloadrange
1条回答
网友
1楼 · 发布于 2024-09-24 02:27:37

Tesseract在内部执行连接组件分析。它确实尝试将文本块分组在一起,并且可能会由于页面中缺少太多字符而导致问题。有一种页面分割模式,您可以要求tesseract将图像视为单个字符。尝试这种方法,它可能会给你所需的结果。你知道吗

相关问题 更多 >