Python 3.x 转换多个PDF';使用PDFminer3将s转换为文本文件

Python 3.x 转换多个PDF';使用PDFminer3将s转换为文本文件,python-3.x,pdfminer,Python 3.x,Pdfminer,希望这是一个非常简单的问题,但是我对在一个小项目中使用Python3是一个全新的认识,希望得到一些指导。我有一个包含1000多个pdf文档的文件夹,其中包含一些我想提取的数据。我可以成功地将PDF转换为文本文件,并将其保存在脚本目录中,但是我不知道如何一次对所有PDF运行此操作,并在新文件夹中为每个PDF创建输出文件。到目前为止,我的代码如下 from pdfminer3.layout import LAParams, LTTextBox from pdfminer3.pdfpage impor

希望这是一个非常简单的问题,但是我对在一个小项目中使用Python3是一个全新的认识,希望得到一些指导。我有一个包含1000多个pdf文档的文件夹,其中包含一些我想提取的数据。我可以成功地将PDF转换为文本文件,并将其保存在脚本目录中,但是我不知道如何一次对所有PDF运行此操作,并在新文件夹中为每个PDF创建输出文件。到目前为止,我的代码如下

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

resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle)
page_interpreter = PDFPageInterpreter(resource_manager, converter)

with open('/sample/mypdf.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(text, file=open("Output.txt","a"))

我将感谢任何帮助或方向,因为我可以前进。谢谢大家!

我可以想到两种方法。如果您希望为几个文件执行此操作。您可以将所有文件路径追加到列表中,如下所示。并对其进行迭代。相同的函数,但只是从列表中迭代它。比如说,

list = ["C:\\Users\\blabla\\Desktop\\.pdf\\test.pdf"
        ,"C:\\Users\\blabla\\Desktop\\.pdf\\testmore.pdf"
        ,"C:\\Users\\blabla\\Desktop\\.pdf\\writingtoxml.pdf"
        ,"C:\\Users\\blabla\Desktop\\.pdf\\2Data.pdf"]
for pathname in list:
    #your code goes here
或者,您可以从给定的目录进行迭代。将所有文档放在一个文件夹中,按如下所示指定目录并遍历。如果希望每个文件都有不同的输出名称,请重命名它们

import os
directory = "C:\\Users\\blabla\\Desktop\\.pdf"
for filename in os.listdir(directory):
    if filename.endswith(".pdf"):
        pathname = os.path.join(directory, filename)
        #Your code goes here
        continue
    else:
        continue
您必须在代码中更改的唯一部分是替换此部分:

with open('/sample/mypdf.pdf', 'rb') as fh:
为此:

with open(pathname, 'rb') as fh:
因为
pathname
本身会按如下方式打印出所需的路径:

C:\Users\blabla\Desktop\.pdf\test.pdf
C:\Users\blabla\Desktop\.pdf\testmore.pdf
C:\Users\blabla\Desktop\.pdf\writingtoxml.pdf
C:\Users\blabla\Desktop\.pdf\2Data.pdf

还可以使用os.mkdir创建新文件夹