图像处理/OCR 技术分离触摸字符
Posted
技术标签:
【中文标题】图像处理/OCR 技术分离触摸字符【英文标题】:Image-processing / OCR technique to separate touching characters 【发布时间】:2021-12-05 01:25:44 【问题描述】:我正在尝试通过 Tesseract 为 OCR 准备图像。 然而,某些字符序列会接触(由于字体字形上的衬线),这会使它感到困惑。
例如I/U
:
我注意到每个角色都有一个明亮的轮廓。如果可以将其替换为深色,则字母将获得一些喘息的空间。
img_grey[img_grey > 100] = 0
...但我不能让它工作。
有人知道更好的技术吗?
【问题讨论】:
OCR 不需要这个 【参考方案1】:使用 OpenCV,您可以将其转换为灰度,然后应用 Otsu 的阈值来获得二值化图像,然后对其进行腐蚀:
import cv2
import numpy as np
im = cv2.imread('image.png')
im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
_, th = cv2.threshold(im, 120, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
kernel = np.ones((5,5), np.uint8)
# Increase iterations if you want it thinner
eroded = cv2.erode(th, kernel, iterations=2)
cv2.imwrite('eroded.png', eroded)
【讨论】:
【参考方案2】:你可以尝试腐蚀图像,在opencv中有一个叫做腐蚀的操作,在这种情况下它基本上缩小了字符的厚度。这应该在字符之间留出一些空间,但注意不要过度使用,否则 tesseract 可能无法识别字符。可以通过反复试验获得适量的误差。
请参阅此Link 了解更多详情。
【讨论】:
以上是关于图像处理/OCR 技术分离触摸字符的主要内容,如果未能解决你的问题,请参考以下文章
Java OCR tesseract 图像智能字符识别技术 Java代码实现