从给定坐标提取 PDF 文本

标签 pdf ghostscript text-extraction

我想使用 Ghostscript 从 PDF 的一部分(使用坐标)中提取文本。
谁能帮我吗?

最佳答案

是的,使用 Ghostscript,您可以从 PDF 中提取文本。但不,它不是这项工作的最佳工具。不,您不能在“部分”(单页的部分)中进行。您可以做什么:仅提取特定范围页面的文本。
第一:Ghostscript's txtwrite输出设备(不太好)

 gs \
   -dBATCH \
   -dNOPAUSE \
   -sDEVICE=txtwrite \
   -dFirstPage=3 \
   -dLastPage=5 \
   -sOutputFile=- \
   /path/to/your/pdf
这会将第 3-5 页中包含的所有文本输出到标准输出。如果要输出到文本文件,请使用
   -sOutputFile=textfilename.txt

gs更新:
Ghostscript 的最新版本在 txtwrite 中进行了重大改进。设备和错误修复。见 recent Ghostscript changelogs (在该页面上搜索 txtwrite)了解详情。

第二:Ghostscript的 ps2ascii.ps PostScript utility (更好的)
这需要您从 Ghostscript Git source code repository 下载最新版本的文件 ps2ascii.ps。 .您必须将 PDF 转换为 PostScript,然后在 PS 文件上运行此命令:
gs \
  -q \
  -dNODISPLAY \
  -P- \
  -dSAFER \
  -dDELAYBIND \
  -dWRITESYSTEMDICT \
  -dSIMPLE \
   /path/to/ps2ascii.ps \
   input.ps \
  -c quit
如果-dSIMPLE参数未定义,每个输出行都包含一些关于使用的字体和字体大小的纯文本内容之外的附加信息。
如果您用 -dCOMPLEX 替换该参数,您将获得有关所用颜色和图像的其他信息。
阅读 ps2ascii.ps 中的注释以了解有关此实用程序的更多信息。使用起来不舒服,但对我来说它在大多数情况下都有效,我需要它......
第三:XPDF's pdftotext CLI 实用程序(比 Ghostscript 更舒适)
一种更舒适的文本提取方式:使用 pdftotext (适用于 Windows 以及 Linux/Unix 或 Mac OS X)。此实用程序基于 Poppler 或 XPDF。这是您可以尝试的命令:
 pdftotext \
   -f 13 \
   -l 17 \
   -layout \
   -opw supersecret \
   -upw secret \
   -eol unix \
   -nopgbrk \
   /path/to/your/pdf
   - |less
这将显示页面范围 13(第一页)到 17(最后一页),保留双密码保护的命名 PDF 文件的布局(使用用户和所有者密码 secret 和 supersecret),使用 Unix EOL 约定,但不插入分页符在 PDF 页面之间,通过更少的管道传输...pdftotext -h显示所有可用的命令行选项。
当然,这两种工具都只适用于 PDF 的文本部分(如果有的话)。哦,数学公式也不会很好用...... ;-)

pdftotext更新:
Poppler 的最新版本 pdftotext现在可以选择提取“PDF 的一部分(使用坐标)”页面,就像 OP 要求的那样。参数是:
  • -x <int> : 裁剪区域左上角的 x 坐标
  • -y <int> : 裁剪区域的左上角 y 坐标
  • -W <int> : 裁剪区域的宽度(以像素为单位)(默认为 0)
  • -H <int> : 裁剪区域的高度(以像素为单位)(默认为 0)

  • 最好,如果与 -layout 一起使用范围。

    第四:MuPDF的mutool draw命令也可以提取文本
    跨平台、开源MuPDF应用程序(由开发 Ghostscript 的同一家公司开发)捆绑了一个命令行工具,mutool .要使用此工具从 PDF 中提取文本,请使用:
    mutool draw -F txt the.pdf
    
    将提取的文本发送到 <stdout> .使用 -o filename.txt将其写入文件。
    第五:PDFLib 的文本提取工具包 (TET)(最好的是……但它是 PayWare)
    TET ,来自 pdflib 的文本提取工具包产品系列可以在 PDF 文件(以及更多)中找到文本内容的 x-y 坐标。 TET 有一个命令行界面,它是我所知道的所有文本提取工具中最强大的。 (它甚至可以处理连字……)引自他们的网站:

    Geometry
    TET provides precise metrics for the text, such as the position on the page, glyph widths, and text direction. Specific areas on the page can be excluded or included in the text extraction, e.g. to ignore headers and footers or margins.


    根据我的经验,虽然它没有你能想象到的最直接的 CLI 界面:在你习惯了它之后,它会做它 promise 做的事情,对于你扔给它的大多数 PDF...

    还有更多选择:
  • podofotxtextract (CLI 工具)来自 PoDoFo 项目(开源)
  • calibre (通常是处理电子书的 GUI 程序,开源)有一个命令行选项可以从 PDF 中提取文本
  • AbiWord (GUI 文字处理器,开源)可以导入 PDF 并将其文件保存为 .txt:abiword --to=txt --to-name=output.txt input.pdf
  • 关于从给定坐标提取 PDF 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187250/

    相关文章:

    pdf - Ghostscript:如何将 EPS 转换为具有相同页面大小的 PDF

    html - 如何获取在谷歌中为关键字找到的结果数

    pdf - 将禁用智能收缩与 wkhtmltopdf 一起使用不会影响标题字体大小

    ipad - iPhone操作系统3.2; PDF渲染;用户互动

    pdf - 如何使用Ghostscript将XPS转换为PDF或XPS转换为DOC?

    c# - 如何使用 Ghostscript 将 PDF 转换为图像

    Python从段落中提取信息

    algorithm - 从网站中提取正文文本,例如仅提取文章标题和文本而不是站点中的所有文本

    java - 在 Java 中使用 CFF/Type1c/Type2 字体

    swift - 在 macOS 上使用 Swift 在 PDF 上绘图