首页 文章

如何从PDF中提取文本? [关闭]

提问于
浏览
126

任何人都可以推荐一个库/ API来从PDF中提取文本和图像吗?我们需要能够获得包含在文档的预先知道区域中的文本,因此API需要向我们提供页面上每个元素的位置信息 .

我们希望以 xmljson 格式输出数据 . 我们目前正在寻找看起来相当不错的PdfTextStream,但希望听到其他人的经验和建议 .

Are there alternatives (commercial ones or free) for extracting text from a pdf programatically?

15 回答

  • 6

    Docotic.Pdf library可以用作extract text from PDF文件作为纯文本或具有每个块的坐标的文本块的集合 .

    Docotic.Pdf也可用于extract images from PDFs .

    免责声明:我为Bit Miracle工作 .

  • 1

    其中一条评论在Windows上使用了gs . 我在Linux / OSX上也取得了一些成功,使用以下语法:

    gs \
     -q \
     -dNODISPLAY \
     -dSAFER \
     -dDELAYBIND \
     -dWRITESYSTEMDICT \
     -dSIMPLE \
     -f ps2ascii.ps \
     "${input}" \
     -dQUIET \
     -c quit
    

    我使用了 dSIMPLE 而不是 dCOMPLEX ,因为后者每行输出1个字符 .

  • 21

    我得到了一个400页的pdf文件,其中包含我必须导入的数据表 - 幸运的是没有图像 . Ghostscript为我工作:

    gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

    输出文件被拆分成带有 Headers 等的页面,但是很容易编写一个应用程序来删除空行等,并吸入所有30,000条记录 . -dSIMPLE-dCOMPLEX 在这种情况下没有区别 .

  • 2

    从今天起我就知道了: best thing for text extraction from PDFsTET, the text extraction toolkit . TET是PDFlib.com系列产品的一部分 .

    PDFlib.com是Thomas Merz的公司 . 如果你不认识他的名字:托马斯梅尔兹是“PostScript和PDF圣经”的作者 .

    TET的第一个化身是a library . 那个人可能会做Budda006想要的一切,包括关于页面上每个元素的位置信息 . 哦,它也可以提取图像 . 它重新组合碎片成片 .

    pdflib.com还提供了这项技术的另一个版本,TET plugin for Acrobat . 而第三个化身是PDFlib TET iFilter . 这是用户桌面的独立工具 . 这些都是免费的(如在啤酒中)用于私人,非商业目的 .

    它真的很强大 . 比Adobe自己的文本提取方式更好 . 它为我提取了文本,其他工具(包括Adobe的)只会吐出垃圾 .

    我刚刚测试了桌面独立工具,他们在网页上说的是真的 . 它有一个非常好的命令行 . 我的一些“有问题”的PDF测试文件工具处理完全令我满意 .

    从现在开始,这件事将成为我对每一个复杂而具有挑战性的PDF文本提取要求的建议 .

    TET简直太棒了 . 它检测表格 . 在表格中,它标识跨越多列的单元格 . 它分别标识每个表格单元格的表格行和内容 . 它可以很好地处理连字符:它删除连字符并恢复完整的单词 . 它支持非ASCII语言(包括CJK,阿拉伯语和希伯来语) . 遇到连字时,它会恢复原始字符......

    试试看 .

  • 7

    一个高效的命令行工具,开源,免费,可在linux和windows上使用:简称pdftotext . 该工具是xpdf库的一部分 .

    http://en.wikipedia.org/wiki/Pdftotext

  • 81

    对于python,有PDFMinerpyPDF2 . 有关这些的更多信息,请参阅Python module for converting PDF to text .

  • 21

    这是我的建议 . 如果要从PDF中提取文本,可以将pdf文件导入Google Docs,然后将其导出为更友好的格式,例如.html,.odf,.rtf,.txt等 . 所有这些都使用Drive API . 它是免费的*和强大的 . 看一眼:

    https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get

    因为它是一个rest API,所以它与所有编程语言兼容 . 我上面发布的链接有许多语言的工作示例,包括:Java,.NET,Python,PHP,Ruby等 .

    我希望它有所帮助 .

  • 2

    PdfTextStream(你说你一直在看)现在 free 用于单线程应用程序 . 在我看来,它的质量比其他库(特别是像时髦的嵌入字体等)更好 .

    或者,你应该看看Apache PDFBox,开源 .

  • 8

    由于问题是关于从PDF获取数据的替代工具,因此您可能有兴趣看一下能够做到这一点的商业工具"ByteScout PDF Extractor SDK":从PDF中提取文本作为XML以及定位数据(x ,y)和字体信息:

    源PDF中的文字:

    Products | Units | Price
    

    输出XML:

    <row>
     <column>
      <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
      </column>
     <column>
      <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
      </column>
     <column>
      <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
      </column>
    </row>
    

    P.S . :另外它也是将文本分成基于表的结构 .

    披露:我为ByteScout工作

  • -1

    我目前可以想到的最好的事情(在"simple"工具列表中)是Ghostscript(当前版本是v.8.71)和PostScript实用程序 ps2ascii.ps . Ghostscript将其发送到 lib 子目录中 . 试试这个(在Windows上):

    gswin32c.exe ^
       -q ^
       -sFONTPATH=c:/windows/fonts ^
       -dNODISPLAY ^
       -dSAFER ^
       -dDELAYBIND ^
       -dWRITESYSTEMDICT ^
       -dCOMPLEX ^
       -f ps2ascii.ps ^
       -dFirstPage=3 ^
       -dLastPage=7 ^
       input.pdf ^
       -dQUIET ^
       -c quit
    

    此命令处理 input.pdf 的第3-7页 . 阅读 ps2ascii.ps 文件本身中的注释,以查看"weird"数字和附加信息的含义(它们表示字符串,位置,宽度,颜色,图片,矩形,字体和分页符......) . 要获得"simple"文本输出,请将 -dCOMPLEX 部分替换为 -dSIMPLE .

  • 6

    对于图像提取,pdfimages是Linux或Windows(win32)的免费命令行工具:

    pdfimages: Extract and Save Images From A Portable Document Format ( PDF ) File

  • 34

    Apache pdfbox具有此功能 - 文本部分描述于:

    http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html

    有关示例实现,请参阅https://github.com/WolfgangFahl/pdfindexer

    测试用例TestPdfIndexer.testExtracting显示了它的工作原理

  • 2

    QuickPDF似乎是一个合理的库,应该以合理的价格做你想要的 .

    http://www.quickpdflibrary.com/ - 他们有30天的试用期 .

  • 1

    我知道这个话题已经很老了,但这个需求仍然存在 . 我阅读了许多文档,论坛和脚本,并构建了一个支持压缩和未压缩pdf的新的高级文档:

    https://gist.github.com/smalot/6183152

    在某些情况下,出于安全原因,禁止使用命令行 . 因此,本机PHP类可以满足许多需求 .

    希望它能帮到你

  • 4

    在我的Macintosh系统上,我发现“Adobe Reader”做得相当不错 . 我在桌面上创建了一个指向“Adobe Reader.app”的别名,我所做的就是在别名上放一个pdf文件,这使它成为Adobe Reader中的活动文档,然后从文件菜单中,我选择“另存为文本...”,给它命名并在哪里保存,单击“保存”,我就完成了 .

相关问题