gpt4 book ai didi

python - PyTesseract-文本被水平白线破坏

转载 作者:行者123 更新时间:2023-12-02 16:09:29 24 4
gpt4 key购买 nike

这是噪声图像扫描的经典PyTesseract问题。但是,在这种情况下,点矩阵打印机正在文本中打印一些水平的白线。随附一些样本。我不确定哪种预处理将改善文本的扫描。
Sample image
使用以下命令,以下示例将输出以下内容:

tesseract test.png stdout  --psm 6 --dpi 120

输出:(预期为“RVC 64.80%”)
PRVG
64.5056"

Sample 2
对于以上图像pytesseract给
152.00 KILOGRAW
817.51 USO

和预期是-152.00 KILOGRAM 617.51 USD

我知道图像很吵,所以请不要发布明显的答案,因为图像很吵,所以输出不好。由于我总是从打印机获得相同的文本,因此我可以应用相同类型的预处理。

最佳答案

第一张图片,处理代码:

from PIL import Image
import numpy as np
import pytesseract
import time
from collections import Counter

img = Image.open('OCR.png').convert('L')
pixelArray = img.load()
threshold = 240
table = []
for y in range(img.size[1]): # binaryzation
List = []
for x in range(img.size[0]):
if pixelArray[x,y] < threshold:
List.append(0)
else:
List.append(256)
table.append(List)

img = Image.fromarray(np.array(table))
img.show()

def operation(image):
resultList = []
pixelList = image.load()
flag = False
for y in range(image.size[1]):
temp = []
linePixel = 0
for x in range(image.size[0]):
if not pixelList[x,y]:
linePixel += 1
temp.append(pixelList[x,y])
if linePixel >= 35: # judge the black dot in one line
flag = True
resultList.append(temp)
elif flag:
# resultList.append([0]*image.size[0]) # to check the handling lines
flag = False
else:
resultList.append([256] * image.size[0])
return Image.fromarray(np.array(resultList))

for i in range(6):
img = operation(img)

img.show()
print(pytesseract.image_to_string(img,config='--psm 6'))

处理的第一措施(二进制化):

enter image description here

第二项措施是删除白线(在一行中判断黑色像素):

enter image description here

最后,结果是:
"RVC
64.80%"

关于python - PyTesseract-文本被水平白线破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60902585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com