我使用了EAST (高效准确的场景文本检测器)的以下PyTorch 实现来识别和绘制许多图像中文本周围的边界框,效果非常好!pytesseract但是,为了从这些图像中提取文本并将它们转换为字符串,我正在尝试使用 OCR 的下一步——失败得很厉害。--oem使用和的所有可能配置--psm,我无法检测到pytesseract看起来非常清晰的文本,例如:已识别的文本位于图像下方。即使我应用了对比度增强,并尝试了扩张和腐蚀,我也无法让 tesseract 识别文本。这只是许多图像中文本更大更清晰的示例之一。关于转换、配置或其他库的任何建议都会有所帮助!更新:在尝试高斯模糊 + Otso 阈值处理后,我能够在白色背景上获得黑色文本(显然这是 pytesseract 的理想选择),并且还添加了西班牙语,但它仍然无法阅读非常纯文本 - 例如:读起来是胡言乱语。处理后的文本图像是和我正在使用的代码:img_path = './images/fesa.jpg'img = Image.open(img_path)boxes = detect(img, model, device)origbw = cv2.imread(img_path, 0)for box in boxes: box = box[:-1] poly = [(box[0], box[1]),(box[2], box[3]),(box[4], box[5]),(box[6], box[7])] x = [] y = [] for coord in poly: x.append(coord[0]) y.append(coord[1]) startX = int(min(x)) startY = int(min(y)) endX = int(max(x)) endY = int(max(y)) #use pre-defined bounding boxes produced by EAST to crop the original image cropped_image = origbw[startY:endY, startX:endX] #contrast enhancement clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8)) res = clahe.apply(cropped_image) text = pytesseract.image_to_string(res, config = "-psm 12") plt.imshow(res) plt.show() print(text)
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
本指南批评了开箱即用的性能(也许准确性也会受到影响):
训练有素的数据。在撰写本文时,适用于 Ubuntu 18.10 的 tesseract-ocr-eng APT 包具有糟糕的开箱即用性能,可能是因为训练数据损坏。
根据我所做的以下测试,使用更新的数据文件似乎可以提供更好的结果。这是我使用的代码:
import pytesseract from PIL import Image print(pytesseract.image_to_string(Image.open('farmacias.jpg'), lang='spa', config='--tessdata-dir ./tessdata --psm 7'))
我将spa.traineddata(您的示例图像有西班牙语单词,对吗?)下载到./tessdata/spa.traineddata
. 结果是:
ARMACIAS
对于第二张图片:
PECIALIZADA:
我之所以使用,--psm 7
是因为这里说它的意思是“将图像视为单个文本行”,我认为这对您的测试图像应该有意义。
添加回答
举报
0/150
提交
取消