将 pytesseract.Output.DATAFRAME 转换为字节或 ocr'ed pdf
Converting pytesseract.Output.DATAFRAME into bytes or ocr'ed pdf
是否可以使用 pytesseract.image_to_data()
输出追溯写入 pdf 文件?
对于我的 OCR 管道,我需要精细访问我的 pdf 的 ocr 数据。我要求使用这种方法:
ocr_dataframe = pytesseract.image_to_data(
tesseract_image,
output_type=pytesseract.Output.DATAFRAME,
config=PYTESSERACT_CUSTOM_CONFIG
)
现在,我想使用 pdfplumber 从 pdf 中提取一些表格数据。但是,pdfplumber 必须使用三个输入之一进行馈送:
- PDF 文件的路径
- 文件对象,以字节形式加载
- 类文件对象,按字节加载
我知道我可以使用 pytesseract 使用以下方法将我的原始 pdf 转换为可搜索的(以字节表示):
# Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
但是,我想避免对我的 pdf 进行 ocr 两次。是否可以将 pytesseract.image_to_data()
的输出与原始图像结合起来并创建某种字节表示形式?
如有任何帮助,我们将不胜感激!
好的,所以我很确定这是我试图完成的一项不可能完成的任务。
本质上 pytesseract.Output.DATAFRAME
产生一个 pandas 数据帧。该数据结构中没有任何地方是原始图像。输出只是文本数据的行和列。没有像素,什么都没有。
相反,我创建了一个 class 可以同时保存原始图像和 ocr 输出数据帧。这是实例初始化的样子:
def __init__(self, temp_image_path):
self.image_path = pathlib.Path(temp_image_path)
self.image = cv2.imread(temp_image_path, cv2.IMREAD_GRAYSCALE)
self.ocr_dataframe = self.ocr()
def ocr(self):
#########################################
# Preprocess image in prep for pytesseract ocr
########################################
tesseract_image = ocr_preprocess(self.image)
########################################
# OCR image using pytesseract
########################################
ocr_dataframe = pytesseract.image_to_data(
tesseract_image,
output_type=pytesseract.Output.DATAFRAME,
config=PYTESSERACT_CUSTOM_CONFIG
)
return ocr_dataframe
这可能会占用一些内存,但我想避免写很多图像。
是否可以使用 pytesseract.image_to_data()
输出追溯写入 pdf 文件?
对于我的 OCR 管道,我需要精细访问我的 pdf 的 ocr 数据。我要求使用这种方法:
ocr_dataframe = pytesseract.image_to_data(
tesseract_image,
output_type=pytesseract.Output.DATAFRAME,
config=PYTESSERACT_CUSTOM_CONFIG
)
现在,我想使用 pdfplumber 从 pdf 中提取一些表格数据。但是,pdfplumber 必须使用三个输入之一进行馈送:
- PDF 文件的路径
- 文件对象,以字节形式加载
- 类文件对象,按字节加载
我知道我可以使用 pytesseract 使用以下方法将我的原始 pdf 转换为可搜索的(以字节表示):
# Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
但是,我想避免对我的 pdf 进行 ocr 两次。是否可以将 pytesseract.image_to_data()
的输出与原始图像结合起来并创建某种字节表示形式?
如有任何帮助,我们将不胜感激!
好的,所以我很确定这是我试图完成的一项不可能完成的任务。
本质上 pytesseract.Output.DATAFRAME
产生一个 pandas 数据帧。该数据结构中没有任何地方是原始图像。输出只是文本数据的行和列。没有像素,什么都没有。
相反,我创建了一个 class 可以同时保存原始图像和 ocr 输出数据帧。这是实例初始化的样子:
def __init__(self, temp_image_path):
self.image_path = pathlib.Path(temp_image_path)
self.image = cv2.imread(temp_image_path, cv2.IMREAD_GRAYSCALE)
self.ocr_dataframe = self.ocr()
def ocr(self):
#########################################
# Preprocess image in prep for pytesseract ocr
########################################
tesseract_image = ocr_preprocess(self.image)
########################################
# OCR image using pytesseract
########################################
ocr_dataframe = pytesseract.image_to_data(
tesseract_image,
output_type=pytesseract.Output.DATAFRAME,
config=PYTESSERACT_CUSTOM_CONFIG
)
return ocr_dataframe
这可能会占用一些内存,但我想避免写很多图像。