我正在尝试通过在图像上加上边框来获取选定的文本。 例如,如果仅通过边界框选择单词,并且我想获取该文本并将其转换为文本文件。 请查看我的代码并进行一些评论,以便我可以实现该功能。
到目前为止,我已经完成了将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
此代码工作正常,我需要使用边界框位置从创建的图像中提取所需的文本
答案 0 :(得分:0)
let r表示目标的边界框(x,y,w,h)。可以通过
# Crop image
Croped_image = Image[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]
所以您有了边界框。然后尝试从分割的裁剪图像中检测文本。无论您想要什么面
答案 1 :(得分:0)
您可以使用此代码从图像中获取自定义文本,并进行相应的更改和修改 这也将您的文本保存到文本文件
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)