将 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 必须使用三个输入之一进行馈送:

我知道我可以使用 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


这可能会占用一些内存,但我想避免写很多图像。