【问题标题】:Easily readable text not recognized by tesseracttesseract 无法识别的易读文本
【发布时间】: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


    【解决方案1】:

    使用these更新的数据文件。

    This guide 批评开箱即用的性能(也许准确性也会受到影响):

    训练数据。在撰写本文时,适用于 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,因为here 表示“将图像视为单个文本行”,我认为这对您的测试图像应该是有意义的。

    this Google Colab你可以看到我做的测试。

    【讨论】:

    • 这太奇怪了——我完全按照这些指示做了——但对我来说,这实际上让情况变得更糟。现在没有从图像中提取文本。你的版本怎么能工作,而我的不行?我有最新版本的pytesseract 并且刚刚下载了最新版本的西班牙语训练数据
    • @the_darkside 我不确定为什么您的版本不起作用。我添加了一个指向 Google Colab 的链接,您可以在其中查看我所做的测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2013-06-14
    • 2018-11-03
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多