哪些是将PDF文件转换为文本的最佳Python模块?
Python版本2.7
我正在寻找有关如何使用PDFMiner和Python从PDF文件中提取文本的文档或示例.
看起来PDFMiner更新了他们的API,我发现的所有相关示例都包含过时的代码(类和方法已经改变).我发现的库使得从PDF文件中提取文本的任务更容易使用旧的PDFMiner语法,所以我不知道如何做到这一点.
事实上,我只是看源代码,看看能否解决它.
使用下面的代码片段中,我试图从提取文本数据这个 PDF文件.
import pyPdf
def get_text(path):
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
content = ""
for i in range(0, pdf.getNumPages()):
content += pdf.getPage(i).extractText() + "\n" # Extract text from page and add to content
# Collapse whitespace
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
Run Code Online (Sandbox Code Playgroud)
然而,我获得的输出在大多数单词之间没有空格.这使得难以对文本执行自然语言处理(我的最终目标,这里).
此外,"手指"一词中的"fi"一直被解释为其他内容.这是相当有问题的,因为这篇论文是关于自发的手指运动......
有人知道为什么会这样吗?我甚至不知道从哪里开始!
我已经尝试了pyPdf和pdfMiner来从pdf文件中提取文本.我有一些不友好的pdf,只有pdfMiner才能成功提取.我在这里使用代码来提取整个文件的文本.但是,我真的想在每页基础上提取文本,就像getPage(i).extractText()pyPdf中的功能一样.有谁知道如何使用pdfMiner提取每页文本?
我对 python 和 PDFminer 很陌生,这对我来说有点复杂,我想要实现的是从 pdf 文件或幻灯片中提取每个页面的标题。
\n我的方法是获取文本行和每页字体大小的列表,然后我将选择最大的数字作为通常以较高字体大小编写的幻灯片标题。
\n这就是我到目前为止所做的:
\n假设我想从这个 pdf 文件中获取第 8 页的标题。文件样本
\n第 8 页内容如下所示:
\n\n这是获取所有页面每行字体大小的代码:
\nfrom pdfminer.high_level import extract_pages\nfrom pdfminer.layout import LTTextContainer, LTChar,LTLine,LAParams\nimport os\npath=r\'cov.pdf\'\n\nExtract_Data=[]\n\nfor page_layout in extract_pages(path):\n for element in page_layout:\n if isinstance(element, LTTextContainer):\n for text_line in element:\n for character in text_line:\n if isinstance(character, LTChar):\n Font_size=character.size\n Extract_Data.append([Font_size,(element.get_text())])\nRun Code Online (Sandbox Code Playgroud)\n生成的列表Extract_Data适用于 pdf 文档的所有页面。我的问题是如何获取文档每个页面(迭代)的列表?
仅第 8 页的预期输出,依此类推,每个页面/然后如果我想选择页面标题,它将是字体大小值最高的项目(行):
\n[[32.039999999999964, \'Pandemic declaration \\n\'],\n [24.0, \' \\n\'],\n [24.0, \' \\n\'],\n [24.0,\n …Run Code Online (Sandbox Code Playgroud)