[英]Python Tesseract figuring out text orientation/transformation
# Tesseract Win-Installer https://github.com/UB-Mannheim/tesseract/wiki
import pytesseract
import cv2
image = cv2.imread("img.png")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(image)
print(text)
输出甚至没有关闭“WX017”,而不是“MX011A”
但是,如果我手动重新排列它可以工作的字符。 我可以转换输入图像并定义 ROI,但方向可以是任何东西。 它也可能是颠倒的。
我想识别圆形周围的弯曲文本
1:
2:
3:
这非常困难,因为tesseract
期望文本失真最小。
一种(当然是牵强的)可能性是尝试检测圆,然后将其映射到矩形上。
为此,您可以使用模糊过滤器将每个字母减少为未连接的 blob,并丢弃低于阈值的灰度值; 迭代直到你得到更多或更少的圆形斑点,然后得到它们的中心。 随机取三个三个中的几个,并为每个三元组计算包含所有三个的圆的中心。 这些中心的平均值应该或多或少是刻字圈的中心。
有了中心和近似半径,将适当高度的圆形冠映射到矩形相对容易(例如,使用极坐标到笛卡尔变换)。
然后,您将tesseract
应用于转换后的矩形。
还应该可以使用自相关来平均和锐化沿所述矩形的多个相同文本(即“MX011A MXOI1A MX017A”->“MX011A”)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.