首页 > 解决方案 > 实现类错误并返回 0 文本

问题描述

我希望这能找到你。我有点挣扎,我有两个问题。首先,我正在尝试实现一个类,它返回类似于 < main的代码。当我试图实现该类时,对象位于 0x02C08790>。我参考了其他评论,不太明白。我的第二个问题是当我运行下面的代码时,它表明我之前保存的 pdf 中没有任何项目。我认为我错误地传递了文件,但我不确定。我已经分别测试了每个代码,两者都独立工作,但不能一起工作。任何帮助是极大的赞赏。

import os
from pdfminer3.layout import LAParams, LTTextBox
from pdfminer3.pdfpage import PDFPage
from pdfminer3.pdfinterp import PDFResourceManager
from pdfminer3.pdfinterp import PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.converter import TextConverter
import io

import PyPDF2
from PyPDF2 import PdfFileMerger, PdfFileReader
import pandas as pd


class Transform:
    # method for extracting data and merging it into one pdf

    def __init__(self):
        try:
            source_dir = os.getcwd()
            merger = PdfFileMerger()
            for item in os.listdir(source_dir):
                if item.endswith("pdf"):
                    merger.append(item)
        except Exception:
            print("unable to collect")
        finally:
            merger.write("test.pdf")
            merger.close()

#running that method extract
    def extract(self):
        resource_manager = PDFResourceManager()
        fake_file_handle = io.StringIO()
        converter = TextConverter(resource_manager, fake_file_handle, laparams=LAParams())
        page_interpreter = PDFPageInterpreter(resource_manager, converter)

        with open('test.pdf', 'rb') as fh:
            for page in PDFPage.get_pages(fh,
                                          caching=True,
                                          check_extractable=True):
                page_interpreter.process_page(page)

            text = fake_file_handle.getvalue()

        # close open handles
        converter.close()
        fake_file_handle.close()

print(Transform)

标签: pythonpdf

解决方案


我希望您的代码应该将当前目录中的所有 pdf 合并到test.pdf这个合并的 pdf 的加打印文本中。它只需要两个更正,首先替换

print(Transform)

print(Transform().extract())

Transform本身就是一个类,您需要从中创建(实例化)对象,使用Transform(). 然后你可以在它上面调用一些方法,比如.extract(),这会运行该类中定义的方法函数。您可以在此处阅读有关类和对象的信息。

二、添加

return text

作为def extract(self)函数体的最后一行。这个返回是必要的,以便提取返回它从 pdf 中提取的文本,否则它会做一些工作,但不会在原始代码中返回任何结果。

您可以在此处运行完整的更正代码


推荐阅读