我使用这个代码将pdf转换为文本。
input1 = '//Home//Sai Krishna Dubagunta.pdf'
output = '//Home//Me.txt'
os.system(("pdftotext %s %s") %( input1, output))
我已经创建了主目录并将源文件粘贴到其中。
我得到的输出是1
没有创建带有。txt的文件。问题在哪里?
有各种Python包可以使用Python从PDF中提取文本。你可以看到一个速度/质量基准。
作为pypdf
和PyPDF2
的维护者,我有偏见,但我会推荐pypdf
供人们开始。它是纯python和BSD 3-clause许可证。这对大多数人来说都是可行的。此外,pypdf可以对PDF文件做更多的事情(例如转换)。
如果您对c依赖关系感到满意,并且不想修改PDF,请尝试使用pypdfium2。Pypdfium2非常快,并且具有惊人的提取质量。
我以前推荐poppler pdftotext。不要用那个。它的质量比PDFium/PyPDF2差。
Tika和PyMuPDF的工作方式与PDFium类似,但它们也有非python依赖。由于商业许可,PyMuPDF可能不适合您。
我不会使用pdfminer/pdfminer。6 ./pdfplumber/pdftotext/borb/PyPDF2/PyPDF3/PyPDF4.
pypdf: Pure Python
安装:pip install pypdf
(更多说明)
from pypdf import PdfReader
reader = PdfReader("example.pdf")
text = ""
for page in reader.pages:
text += page.extract_text() + "n"
PDFium:高质量和非常快,但有c依赖
安装:pip install pypdfium2
import pypdfium2 as pdfium
text = ""
pdf = pdfium.PdfDocument(data)
for i in range(len(pdf)):
page = pdf.get_page(i)
textpage = page.get_textpage()
text += textpage.get_text()
text += "n"
[g.close() for g in (textpage, page)]
pdf.close()
你的表达
("pdftotext %s %s") %( input1, output)
将转换成
pdftotext //Home//Sai Krishna Dubagunta.pdf //Home//Me.txt
表示传递给pdftotext
的第一个参数是//Home//Sai
,第二个参数是Krishna
。这显然行不通。
将参数用引号括起来:
os.system("pdftotext '%s' '%s'" % (input1, output))
我认为pdftotext命令只有一个参数。尝试使用:
os.system(("pdftotext %s") % input1)
,看看会发生什么。