输入样本
我正在尝试对图像进行预处理,以提高ocr的质量。但是,我遇到了一个问题。 我要处理的图像在同一图像内包含不同的文本方向(两页,第一页为垂直,第二页为水平,然后将它们扫描到同一图像。
自动检测到第一部分的文本方向。但是,其他页面上的其余文本完全被遗漏了。
我当时想创建一个区域模板来检测感兴趣的区域,但我不知道如何。
或自动检测边界并自适应地分割图像,然后翻转分割的部分以获得所需的结果。
我可以基于固定的像素高度设置拆分,但它也不是恒定的。
from tesserocr import PyTessBaseAPI, RIL
import cv2
from PIL import Image
with PyTessBaseAPI() as api:
filePath = r'sample.jpg'
img = Image.open(filePath)
api.SetImage(img)
boxes = api.GetComponentImages(RIL.TEXTLINE, True)
print('Found {} textline image components.'.format(len(boxes)))
for i, (im, box, _, _) in enumerate(boxes):
# im is a PIL image object
# box is a dict with x, y, w and h keys
api.SetRectangle(box['x'], box['y'], box['w'], box['h'])
ocrResult = api.GetUTF8Text()
conf = api.MeanTextConf()
for box in boxes:
box = boxes[0][1]
x = box.get('x')
y = box.get('y')
h = box.get('h')
w = box.get('w')
cimg = cv2.imread(filePath)
crop_img = cimg[y:y+h, x:x+w]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
output image 如您所见,我可以应用方向检测,但是我会从此类图像中获取任何有意义的文本。
答案 0 :(得分:0)
在每个组件图像上尝试使用Tesseract API方法GetComponentImages
,然后DetectOrientationScript
。