【发布时间】:2021-04-26 21:52:08
【问题描述】:
我想对这样的图像执行 OCR:
这是一个以冒号作为小数分隔符的数字数据表。
它不嘈杂,对比度很好,白色背景上的黑色文字。
作为一个额外的预处理步骤,为了解决框架边框的问题,我剪掉了每个单元格,binarize 它,用白色边框填充它(以防止边缘问题)并只传递那个单一的单元格图像到tesseract。
我还查看了单个细胞图像,以确保切割过程按预期工作并且不会产生伪影。这是tesseract 的输入图像的两个示例:
很遗憾,tesseract 无法一致地解析这些内容。我没有发现可以正确识别所有 36 个值的配置。
在 SO 上存在几个类似的问题,通常的答案是对 --oem 和 --psm 参数的特定组合的建议。所以我用 pytesseract 编写了一个 Python 脚本,它循环遍历从 0 到 3 的 --oem 的所有组合以及从 0 到 13 的 --psm 的所有值以及 lang=eng 和 lang=deu。我忽略了引发错误的组合。
示例 1: 对于--psm 13 --oem 3,上面的“1,7”图像被错误识别为“4,7”,但“57”图像被正确识别为“57”。 p>
示例 2: 对于--psm 6 --oem 3,上述“1,7”图像被正确识别为“1,7”,但“57”图像被错误识别为“o/”。
还有什么对提高 tesseract 的输出质量有帮助的建议吗?
我的 tesseract 版本:
tesseract v4.0.0.20190314
leptonica-1.78.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.2.0
Found AVX2
Found AVX
Found SSE
【问题讨论】:
标签: ocr tesseract python-tesseract