Python,文本检测OCR
问题描述:
我试图从扫描的表单中提取数据。窗体有类似下面的图片中显示的一个标准格式:Python,文本检测OCR
我一直在使用pytesseract(正方体OCR)来检测图像的文本尝试,但并未找到文本做了体面的工作并将图像转换为文本。 然而,它实质上只是给我所有检测到的文本,而没有保持数据的格式。
我希望能够做一些事情,如下面:
查找文本的特定部分,然后找到下面或旁边的相关的数据。与此相似的问题使用OpenCV的Detect text region in image using Opencv
有没有办法,我基本上可以做到以下几点:
- 要么找到窗体上的所有文本框,每个盒子上执行OCR,看看哪一个与“witnesess:”文本最接近,然后找到它下面的部分,并对这些部分执行单独的OCR。
- 或者如果表单是标准的,并且我知道“见证”文本部分的大概位置,我可以在opencv中指定它的一般位置,然后提取下面的文本并对其执行OCR。
编辑:我试过下面的代码,试图检测文本的特定区域。然而,它并不是专门识别所有地区的文字。
import cv2
img = cv2.imread('t2.jpg')
mser = cv2.MSER_create()
img = cv2.resize(img, (img.shape[1]*2, img.shape[0]*2))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()
regions = mser.detectRegions(gray)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions[0]]
cv2.polylines(vis, hulls, 1, (0,255,0))
cv2.imshow('img', vis)
下面是结果:
答
我觉得你的答案已经在自己的岗位。 我最近类似的东西,这是我做的:
//id_image was loaded with cv2.imread
temp_image = id_image[start_y:end_y,start_x:end_x]
img = Image.fromarray(temp_image)
text = pytesseract.image_to_string(img, config="-psm 7")
所以基本上,如果你的格式是预定义的,你只需要知道你想要的文本字段的位置(你已经知道),裁剪,然后应用ocr(tesseract)提取。
在这种情况下,您需要import pytesseract, PIL, cv2, numpy
。
Tesseract可以给你包围盒,你使用的是包装? –
由于您似乎以明确定义的格式显示窗体,因此您可以手动定义一些边界框,裁剪图像并单独在裁剪后的图像上运行tesseract。 – ZdaR