python - 如何在 python 脚本和外部命令行中使用 pdfminer.six 的 pdf2txt.py?
问题描述
我知道如何在命令行中使用 pdfminer.six 的 pdf2txt.py 工具;但是,我有许多 PDF 文件要转换为 txt 文件,而且我不能在命令行中一一进行。我还没有找到如何在实际的 python 脚本中使用这个工具。有任何想法吗?
解决方案
好消息是您可以使用 PDFMiner 库重新创建您可能在命令行上使用 pdf2text 运行的任何属性/命令。请参阅下面的我使用的基本示例:
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import BytesIO
def pdf_to_text(path):
manager = PDFResourceManager()
retstr = BytesIO()
layout = LAParams(all_texts=True)
device = TextConverter(manager, retstr, laparams=layout)
filepath = open(path, 'rb')
interpreter = PDFPageInterpreter(manager, device)
for page in PDFPage.get_pages(filepath, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
filepath.close()
device.close()
retstr.close()
return text
if __name__ == "__main__":
text = pdf_to_text("yourfile.pdf")
print(text)
如果您需要应用页码或密码,这些是 PDFPage.get_pages 中的可选参数。同样,如果您需要进行布局更改,例如全文本或边距大小,LAParams 初始化程序有可选属性
推荐阅读
- android - 使用 Android 意图打开 PDF 文件
- wpf - 出现验证错误时,Wpf clear disabled TextBox.Text
- .htaccess - htaccess 重定向参数和端口
- asp.net-mvc - 需要设计模式
- sql-server - 如何使用非聚集索引?
- mysql - 需要太多连接时,Azure Mysql 数据库服务会生成失败的连接
- javascript - Angular 6 - 从外部 js 文件调用 Angular 函数
- jupyter-notebook - Html 演示 ipython 笔记本中的 ipywidget 交互式绘图
- azure-devops - Azure API 管理 - API 的回归测试和性能测试
- javascript - 将 Javascript UUID 函数翻译成 C