我正在尝试通过在图像上定界框来获取选定的文本。例如,如果仅通过边界框选择单词,并且我想获取该文本并将其转换为文本文件。请查看我的代码并进行一些评论,以便我可以实现该功能。
到目前为止,我已经完成了将PDF文件转换为带有文本边界框的图像的操作。
import numpy as np
import csv
import io
from PIL import Image
import pytesseract
from wand.image import Image as wi
from pytesseract import Output
import cv2
pdf = wi(filename="samplecompany.pdf", resolution=100)
pdfImg = pdf.convert('jpg')
j = 1
for img in pdfImg.sequence:
page = wi(image=img)
page.save(filename=str(j)+".jpg")
img1 = cv2.imread(str(j)+".jpg")
d = pytesseract.image_to_data(img1, output_type=Output.DICT)
n_boxes = len(d['level'])
print(n_boxes)
for i in range(n_boxes):
(x, y, w, h) = (d['left'][i], d['top']
[i], d['width'][i], d['height'][i])
print((x, y, w, h))
cv2.rectangle(img1, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imwrite(str(j)+".jpg", img1)
cv2.waitKey(0)
j += 1
这段代码工作正常,我需要使用边界框位置从创建的图像中获取所需的文本
您可以使用此代码从图像中获取自定义文本并进行相应的更改和修改,这也将您的文本保存到文本文件中
import io
import cv2
import numpy as np
import pytesseract
from PIL import Image
from pytesseract import Output
from wand.image import Image as wi
import sys
pdf = wi(filename="Resume.pdf", resolution=100)
pdfImg = pdf.convert('jpg')
j = 1
imgBlobs = []
img1= []
for img in pdfImg.sequence:
page = wi(image=img)
page.save(filename=str(j)+".jpg")
img1.append(cv2.imread(str(j)+".jpg"))
j += 1
extracted_text = []
for img2 in img1:
d = pytesseract.image_to_data(img2, output_type=Output.DICT)
n_boxes = len(d['level'])
print(n_boxes)
extracted_text.append(d['text'][9])
(x, y, w, h) = (d['left'][9], d['top'][9], d['width'][9], d['height'][9])
cv2.rectangle(img2, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('img', img2)
print(d)
with open('Prototype.txt', 'w') as filehandle:
for listitem in extracted_text:
filehandle.write('%s\n' % listitem)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句