0

pytesseract.image_to_data()是否可以使用输出追溯写入 pdf 文件?

对于我的 OCR 管道,我需要对我的 pdf 的 ocr'ed 数据进行精细访问。我要求使用这种方法:

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')

但是,我想避免 ocr'ing 我的 pdf 两次。是否可以将输出pytesseract.image_to_data()与原始图像结合起来并创建某种字节表示?

任何帮助将非常感激!

4

1 回答 1

0

好的,所以我很确定这是我试图完成的一项不可能完成的任务。

自然pytesseract.Output.DATAFRAME会产生一个熊猫数据框。该数据结构中没有任何地方是原始图像。输出只是文本数据的行和列。没有像素,什么都没有。

相反,我创建了一个可以同时保存原始图像和 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


这可能有点占用内存,但我想避免写很多图像。

于 2021-05-12T19:58:10.877 回答