我正在尝试为Tesseract的OCR准备图像。然而,某些字符序列接触(由于字体字形上的衬线),这会混淆它。
例如I/U

我注意到每个字符都有一个明亮的轮廓。如果可以用深色代替,这些字母就会获得一些喘息的空间。
img_grey[img_grey > 100] = 0..。但我不能让它工作。
有没有人知道更好的技术?
发布于 2021-10-17 21:26:36
使用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)

发布于 2021-10-17 20:56:32
你可以尝试腐蚀图像,在opencv中有一个叫做腐蚀的操作,在这种情况下它基本上缩小了字符的厚度。这应该在字符之间留出一些空格,但要注意不要过度,否则tesseract可能无法识别字符。可以通过试验和错误获得适量的错误。
有关更多详细信息,请参阅此Link。
https://stackoverflow.com/questions/69608458
复制相似问题