python - 如何在不更改文本格式的情况下从 PDF 中提取文本?
问题描述
我正在尝试从多个 PDF 文件中提取文本,但是,在尝试了列出的大多数解决方案之后,我仍然无法从 PDF 文档中逐行提取文本,而格式会变得完全疯狂。我已经用 java 编写了程序,它运行良好(附加代码),请任何人建议我如何在 python 中完成相同的任务。
Java 代码
File file = new File(Path);
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
示例输出:第 1 行在 pdf 上突出显示\n 第 2 行在 pdf\n 上突出显示等。
Python代码
def convert_pdf_to_string(file_path):
output_string = StringIO()
with open(file_path, 'rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
return(output_string.getvalue())
#循环浏览文件夹中的文件并开始提取内容
for x in list1:
g = convert_pdf_to_string((oldDir + "\\" + x))
print(g)
示例输出:令牌\n 令牌\n 令牌\n 令牌\n 等。
解决方案
推荐阅读
- sql - 如何返回黄色人口普查块中的所有行?
- docker - Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied
- javascript - 在不修改递归函数的情况下添加延迟
- sql - Not sure why it says "column ambiguously defined"
- java - Interface as argument of a function - Message
- netlogo - Accelerating BehaviorSpace runs using speed slider?
- sql - Updating value from another table, but with a different value for the JOIN
- acumatica - Change Default Sort on Contact Activities Tab
- html - html表单中的复选框即使使用标签也不会检查:这是整个表单
- c - 忽略大小写对字符串进行排序;大写优先用于相等的字符串