尝试将pdf免费转换为文本


16

我正在使用OSX,并希望能够将pdf文件转换为文本。

我想要一个免费的应用程序来执行此操作,因为我肯定必须有一些。


2
您是否要从已经包含文本的PDF中提取文本?(即,您可以复制并粘贴其中的片段)还是要识别图像内容中的文本?
艾伦·舒特科

是否free-ocr.com帮助?
蒂姆(Tim)

Answers:


13

这是我用来通过Homebrew安装和使用xpdf的步骤。

  1. 安装Homebrew的依赖项:

    xcode-select --install
    
  2. 从他们的网站安装Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. 请执行告诉其完成Homebrew安装的操作。

  4. 验证Homebrew是否满意并且可以正常工作。

    brew doctor
    
  5. 接下来安装xpdf及其依赖项:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. 最后,使用pdftotext,这是xpdf套件随附的软件包:

    pdftotext Some_Document.pdf Some_Document.txt
    

第一个文件名是现有的PDF。第二个是目的地。结果比使用Adobe Acrobat(公认的旧版本)要好得多。编辑:Adobe Acrobat的新(2019)版本显示出类似的不良结果。


2
我认为xquartz中的控制台工具不需要xpdf。此外,有popplerxpdf似乎更为积极维护:github.com/scraperwiki/scraperwiki-python/issues/...
吉荣Wiert Pluimers

6

多种方法。

  1. 使用Google文档(您将需要一个Google帐户)

  2. 使用Automator(需要做一些工作)

您可以使用Automator创建可以从PDF提取文本并将其另存为文本或RTF文档的工作流。

从pdf提取文本

或来自App Store的应用程序,例如PDF到文本


4

xpdf 我安装了端口:

port install xpdf

包含:

xpdf-pdftotext

对于来自文本文件(而非图像)的任何PDF文件,它都能满足您的需求:

xpdf-pdftotext PDF_file text_file

1
该命令(至少由HomeBrew安装)仅为“ pdftotext”。
Flash Sheridan

@FlashSheridan我可以鼓励您发布一个涵盖“ pdftotext”的答案,以及如何通过自制软件安装它吗?评论可能随时被删除(也不会出现在搜索中)。
nohillside

4

当前版本的Adobe Reader(11.0.09)在其“文件”菜单中具有“另存为”项。

选项之一是Text

该应用程序是免费的,并且在输出文本文件方面做得不错。新文档中的所有图像都将以.txt格式丢失。


1

我认为您应该能够将文本复制并粘贴到另一个文档中。选择所有文本

在“预览”中打开PDF,然后

  • 选择“编辑|全选”
  • 选择“编辑|复制”

转到另一个应用,说“文本编辑”

  • 选择“编辑|粘贴”

请注意,如果您尝试执行此操作,并且没有粘贴任何文本,只有一堆空白行,请尝试先将PDF打印为新的PDF,例如

  • 在预览中,选择“文件|打印”
  • 在右下方,选择“ PDF |另存为PDF”
  • 这将导出一个新的PDF。

现在,使用此新PDF尝试上述过程。为我工作!

PS:如果您使用Microsoft Word,则可以用Word 打开PDF


1
当PDF文档实际上包含文本内容时,这应该可以工作,但它不会保持格式设置,并且在某些情况下会生成垃圾文本以及被视为需要的文本。请注意,这与其他方法也可能相同,但我指出这一点很重要。
user3439894

毫无疑问-当然不是完美的,我完全同意您所说的一切。我只是在这里添加了它,这是我之前注意到的选项,它对我有用,根本没有安装任何东西;-)
Brad Parks

我也同意,它适用于大多数情况,但是与文档无关的页码,页脚详细信息以及更糟糕的是:大文档上的INFINITE SCROLLING使此解决方案不尽人意。如果少于5页,我会考虑的,但是鉴于我需要的大多数表格都是来自研究网站的PDF,这些表格拒绝吐出excel或SQL,因此该选项甚至无法使用。
Tmanok

同意!不是您的用例的可行选择
Brad Parks

1

以下python脚本会将文本从PDF文档输出到.txt文件。(注意:由于数据以PDF格式保存,因此无法保证文本必须以“逻辑”人类可读的顺序显示。)

该脚本将为在命令行上作为参数提供的任何PDF文件创建文本文件(例如pdf2txt.py myPDF.pdf),或者您可以在Automator的“运行Shell脚本”操作中使用,将外壳类型设置为python并将输入传递为“作为参数” 。然后,您可以将其用作快速操作或DropApp。

#!/usr/bin/python
# coding: utf-8

import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4

def pdf2txt():
    for filename in sys.argv[1:]:   
        inputfile =filename.decode('utf-8')
        shortName = os.path.splitext(filename)[0]
        outputfile = shortName+" text.txt"
        pdfURL = NSURL.fileURLWithPath_(inputfile)
        pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
        if pdfDoc :
            pdfString = NSString.stringWithString_(pdfDoc.string())
            pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)

if __name__ == "__main__":
   pdf2txt()

这是开箱即用的(即-不必安装任何python库或任何东西!)-只是文本的原始转储,但有时正是您所需要的-请注意,该文件保存在当前目录中(如果从命令行),并且不会出现在stdout上
Brad Parks

@BradParks应该将其与输入文件保存在同一文件夹中:它从命令参数中获取文件路径。您如何提供它?
benwiggy

啊...我当时在同一个文件夹中,所以我从没注意到-我唯一的真实意图是说它不会出现在stdout上,并且可以正常工作!谢谢!
布拉德·帕克斯

1
if pdfDoc语句后的两行替换为print(pdfDoc.string())
benwiggy

哦,哇,这确实是Apple Python发行版第一次真正有用的东西!感谢您的回复!
热雷米
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.