【发布时间】:2020-12-05 11:02:14
【问题描述】:
我使用了 EAST(高效准确的场景文本检测器)的以下PyTorch implementation 来识别和绘制多个图像中文本周围的边界框,效果非常好!
但是,我正在尝试使用 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)
【问题讨论】:
标签: python python-imaging-library ocr tesseract python-tesseract