如何解决用Pytesseract识别picross / nonogram板中的数字很困难
我正在尝试用Python编写一个程序,该程序可以读取Picross / Nonogram板。
A 20x20 one in the format I'm working on looks like this
我在读取图像时遇到了麻烦,正在使用Pytesseract,它可以识别一些数字为不正确的字符,例如,将五分之五(“ 5”)作为美元符号(“ $”)。我曾尝试只将0到9的数字列入白名单,但这样做仍然是将其读为常规字符,而忽略它。
是否有任何方法可以迫使Tesseract将其检测到的每个字符转换为数字?因此,如果它显示为“ $”,则迫使该美元符号进入具有最大相似度的数字。否则,我可以对图像预处理进行一些调整以使结果更好吗?
到目前为止,这是我的代码,只包括读取板子左侧数字的部分:
import numpy as np
import cv2
import pytesseract as tess
from pytesseract import Output
tess.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract'
class Image:
def __init__(self,file):
self.image = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
self.imgLeft = self.image[416:901,10:104]
self.imgLeft = cv2.resize(self.imgLeft,(280,1200))
def leftLimits(self):
limits = []
for i in range(20):
# pre-processing
column = self.imgLeft[1200//20*i:1200//20*(i+1),:]
column = cv2.GaussianBlur(column,(9,9),0)
_,column = cv2.threshold(column,180,255,cv2.THRESH_BINARY)
rowLimits = []
# put each character in a box and check if it's part of a one-digit number or a two-digit number
numbers = tess.image_to_boxes(column,output_type=Output.DICT,config = '--psm 6')
# up here I tried to add '-c tessedit_char_whitelist=0123456789' but it just erased the char
for j in range(len(numbers['bottom'])):
value = numbers['char'][j]
if j == 0:
rowLimits.append(value)
else:
if numbers['left'][j] - numbers['right'][j-1] < 12:
rowLimits[-1] = rowLimits[-1] + value
else:
rowLimits.append(value)
limits.append([limit for limit in rowLimits])
return limits
i = Image("filename")
print(i.leftLimits())
谢谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。