有没有比pdftotext更好的pdf到文本转换器?


63

我正在使用pdftotext(poppler-utils的一部分)将PDF文档转换为文本。它在大多数情况下都有效,但是我希望做的一件事是在单独的段落之间插入空白行,而不是将它们混在一起。

有没有办法让pdftotext做到这一点?如果不是,是否还有另一个可以将pdf转换为文本的工具?


8
在标题中您说“ pdftotext”(poppler-utils的一部分),在正文中您说“ pdt2text”(我不知道)。您指的是哪个?
enzotib

类似的问题PDF to audio software for academic papers? 软件
recs.stackexchange.com/questions/10640/…– JinSnow

Answers:



117

如果您使用的是pdftotext,则可以使用该-layout标志保留输入的pdf文件中页面上文本的布局:

pdftotext -layout input.pdf output.txt

6
还有-table专门用于表格布局,效果很好。
P.Windridge

3
@ P.Windridge,此表选项在哪里?我在Ubuntu 17.04中的poppler-utils的0.48.0版本上找不到它
gozzilli

2
@gozzilli这是这样了。最新的pdftotext是v4.00,可在Xpdf工具的 tarball中找到
阿德里安

2
@gozzilli版本以0开头。表示它是Xpdf原始代码的Popplers分支。他们在分支代码时重新开始了版本号。现在,这两个组似乎都维护了这些PDF工具的单独版本。
安德鲁(Andrew)

1
@VivekSable这些是指定-r(分辨率,默认为72 dpi)下的点(像素)
vstepaniuk

14

作为开源(和自动化)的爱好者,我不想这么说,但是我刚得到的最好结果(在相当大的复杂PDF上)是在Adobe Reader中打开它,然后选择“文件” |“另存为文本”。

(我正在为文本分析实验做预处理,而不是作为读者,但是我认为我的第一和第二选择是相同的。)

我一直在并排比较输出。我的第二选择是电子书转换。

Adobe:留在FF中用于换页符,留在页面编号中,尚未将标题/段落转换为单行,但具有固定的连字符。PDF中隐藏的垃圾没有得到输出。在部分开头正确地获得大资本,例如“ The”,“ T he”甚至“ T he”。

ebook-convert:页码左,页眉/页脚中有一些隐藏的垃圾(但没有FF)。将大多数段落转换为单行。它错过的是双倍行距!项目符号并不总是与文本对齐。在本章的开头正确获得了“ The”。

pdftotext(不带--layout):不错,项目符号对齐,但页眉/页脚有杂音。FF在那里。连字符已删除。最糟糕的一章大写字母开头:“ T \ n \ nhe”。

pdftotext(带有--layout):相似,但缩进更多。“ T he”作为本章的开始。

pdftohtml >> pdfreflow >> htmltotext:它删除了页码,但是在页眉/页脚中仍然是垃圾。“ T he”作为本章的开始。连字符已删除。(它在每个段落中使用多行,但是它们与其他版本中的换行符不同!)


在我的情况下,Linux上的Acrobat Reader 9生成了压缩单词。ebook-convert工作正常。
ov7a

我们确实需要一个AI应用程序,对于这样的任务似乎很完美:有人知道吗?
JinSnow

1
Adobe Reader是免费的,但是...仅用于阅读pdf。对于其他事情,您需要付费(每月订阅)。(文本的PDF限制为几页)。Pdfto文本(或Win上的xpdf)非常适合我的需求。
JinSnow

对于表格数据,现在最好使用-table开关“ pdftotext -table file_name.pdf output_name.txt”
Thom Ives

5

如果您拥有Google帐户,则可以使用Google文档上传PDF并将其转换为可编辑的文本。


1

我还尝试了pypdf并将其与pdftotext在两个文档上进行了比较。它具有更多的换行符,并拆分了一些节名称(REFERENCES为REFERENCES)。

pdf2txt确实输出了完整的垃圾。

如果pdftotext破坏了输出,我经常使用pdfBox(java)。您可以尝试一下。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.