我正在尝试合并我能够独立完成的两件不同的事情。不幸的是,PDFMiner 文档根本没有用。
我有一个包含数百个 PDF 的文件夹,名称为:"[0-9].pdf"
,其中没有特定的顺序,我也不想对它们进行排序。我只需要一种方法来浏览它们并将它们转换为文本。
使用这篇文章:Extracting text from a PDF file using PDFMiner in python? - 我能够成功地从一个 PDF 中提取文本。
部分帖子:batch process text to csv using python - 有助于确定如何打开装满 PDF 的文件夹并使用它们。
现在,我只是不知道如何将它们组合成一个一个打开 PDF,将其转换为文本对象,将其保存到具有相同 original-filename.txt 的文本文件
,然后移至目录中的下一个 PDF。
这是我的代码:
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import os
import glob
directory = r'./Documents/003/' #path
pdfFiles = glob.glob(os.path.join(directory, '*.pdf'))
resourceManager = PDFResourceManager()
returnString = StringIO()
codec = 'utf-8'
laParams = LAParams()
device = TextConverter(resourceManager, returnString, codec=codec, laparams=laParams)
interpreter = PDFPageInterpreter(resourceManager, device)
password = ""
maxPages = 0
caching = True
pageNums=set()
for one_pdf in pdfFiles:
print("Processing file: " + str(one_pdf))
fp = file(one_pdf, 'rb')
for page in PDFPage.get_pages(fp, pageNums, maxpages=maxPages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
text = returnString.getvalue()
filenameString = str(one_pdf) + ".txt"
text_file = open(filenameString, "w")
text_file.write(text)
text_file.close()
fp.close()
device.close()
returnString.close()
我没有遇到编译错误,但我的代码没有执行任何操作。
感谢您的帮助!
最佳答案
只是用@LaurentLAPORTE 的有效解决方案想法回答了我自己的问题。
使用 os
将 directory
设置为绝对路径,如下所示:os.path.abspath("../Documents/003/")
。然后它就会起作用。
关于python - 遍历 .PDF 并使用 PDFMiner 将它们转换为 .txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43877770/