从给定坐标提取 PDF 文本
我想使用 Ghostscript 从 PDF 的一部分(使用坐标)中提取文本。
有人可以帮我吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想使用 Ghostscript 从 PDF 的一部分(使用坐标)中提取文本。
有人可以帮我吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
是的,使用 Ghostscript,您可以从 PDF 中提取文本。但不,它不是完成这项工作的最佳工具。不,您不能在“部分”(单个页面的部分)中执行此操作。您可以做什么:仅提取特定范围页面的文本。
首先:Ghostscript的
txtwrite
输出设备(不太好)这将输出所有第 3-5 页上包含的文本到标准输出。如果您想输出到文本文件,请使用
gs
更新:Ghostscript 的最新版本在
txtwrite
设备和错误修复方面进行了重大改进。请参阅最近的 Ghostscript 变更日志(在该页面上搜索txtwrite)了解详细信息。第二:Ghostscript 的 < code>ps2ascii.ps PostScript 实用程序(更好)
此实用程序要求您从以下位置下载文件 ps2ascii.ps 的最新版本Ghostscript Git 源代码存储库。您必须将 PDF 转换为 PostScript,然后在 PS 文件上运行以下命令:
如果未定义
-dSIMPLE
参数,则每个输出行除有关字体的纯文本内容外还包含一些附加信息和使用的字体大小。如果您将该参数替换为
-dCOMPLEX
,您将获得有关所使用的颜色和图像的其他信息。阅读 ps2ascii.ps 内的注释以了解有关此实用程序的更多信息。使用起来不太舒服,但对我来说,它在大多数情况下都有效,我需要它......
第三: XPDF 的
pdftotext
CLI 实用程序(比 Ghostscript 更舒适)一种更舒适的文本提取方式:使用
pdftotext
(适用于 Windows 以及 Linux/Unix 或Mac OS X)。该实用程序基于 Poppler 或 XPDF。您可以尝试以下命令:这将显示页面范围 13(第一页)到 17(最后一页),保留双密码的布局受保护的命名 PDF 文件(使用用户和所有者密码 secret 和 supersecret),采用 Unix EOL 约定,但不在 PDF 页面之间插入分页符,通过 less...
pdf转文本-h
显示所有可用的命令行选项。当然,这两种工具仅适用于 PDF 的文本部分(如果有的话)。哦,数学公式也不太适用...;-)
pdftotext
更新:Poppler 的
pdftotext 的最新版本
现在可以选择提取“PDF 的一部分(使用坐标)” 页面,就像 OP 所要求的那样。参数为:-x
:裁剪区域左上角的 x 坐标-y
:裁剪区域左上角的 y 坐标-W
:裁剪区域的宽度(以像素为单位)(默认为 0)-H
:裁剪区域的高度(以像素为单位)(默认为 0)如果与
-layout
参数一起使用,则效果最佳。第四:MuPDF的
mutool draw
命令也可以提取文本跨平台、开源MuPDF应用程序(由同时开发 Ghostscript 的同一家公司制造)捆绑了一个命令行工具
mutool
。要使用此工具从 PDF 中提取文本,请使用:将提取的文本发送到
。使用-o filename.txt
将其写入文件。第五:PDFLib 的文本提取工具包 (TET)(最好的...但它是 PayWare)
TET,pdflib 系列产品中的文本提取工具包可以找到 xy -a中文本内容的坐标PDF 文件(以及更多)。 TET 有一个命令行界面,它是我所知道的所有文本提取工具中最强大的。 (它甚至可以处理连字...)引用自他们的网站:
根据我的经验,虽然它不支持您可以想象的最直接的 CLI 界面:在您习惯了它,它会做它承诺做的事情,对于您向它扔的大多数 PDF...
而且还有更多选项:
podofotxextract
(CLI 工具),来自 PoDoFo 项目(开源)calibre
(通常是处理电子书的 GUI 程序,开源)有一个命令行选项,可以从 PDF 中提取文本AbiWord
(GUI 文字处理器,开源)可以导入 PDF 并将其文件另存为 .txt:abiword --to=txt --to -name=output.txt input.pdf
Yes, with Ghostscript, you can extract text from PDFs. But no, it is not the best tool for the job. And no, you cannot do it in "portions" (parts of single pages). What you can do: extract the text of a certain range of pages only.
First: Ghostscript's
txtwrite
output device (not so good)This will output all text contained on pages 3-5 to stdout. If you want output to a text file, use
gs
Update:Recent versions of Ghostscript have seen major improvements in the
txtwrite
device and bug fixes. See recent Ghostscript changelogs (search for txtwrite on that page) for details.Second: Ghostscript's
ps2ascii.ps
PostScript utility (better)This one requires you to download the latest version of the file ps2ascii.ps from the Ghostscript Git source code repository. You'd have to convert your PDF to PostScript, then run this command on the PS file:
If the
-dSIMPLE
parameter is not defined, each output line contains some additional info beyond the pure text content about fonts and fontsize used.If you replace that parameter by
-dCOMPLEX
, you'll get additional infos about colors and images used.Read the comments inside the ps2ascii.ps to learn more about this utility. It's not comfortable to use, but for me it worked in most cases I needed it....
Third: XPDF's
pdftotext
CLI utility (more comfortable than Ghostscript)A more comfortable way to do text extraction: use
pdftotext
(available for Windows as well as Linux/Unix or Mac OS X). This utility is based either on Poppler or on XPDF. This is a command you could try:This will display the page range 13 (first page) to 17 (last page), preserve the layout of a double-password protected named PDF file (using user and owner passwords secret and supersecret), with Unix EOL convention, but without inserting pagebreaks between PDF pages, piped through less...
pdftotext -h
displays all available commandline options.Of course, both tools only work for the text parts of PDFs (if they have any). Oh, and mathematical formula also won't work too well... ;-)
pdftotext
Update:Recent versions of Poppler's
pdftotext
have now options to extract "a portion (using coordinates) of PDF" pages, like the OP asked for. The parameters are:-x <int>
: top left corner's x-coordinate of crop area-y <int>
: top left corner's y-coordinate of crop area-W <int>
: crop area's width in pixels (defaults to 0)-H <int>
: crop area's height in pixels (defaults to 0)Best, if used with the
-layout
parameter.Fourth: MuPDF's
mutool draw
command can also extract textThe cross-platform, open source MuPDF application (made by the same company that also develops Ghostscript) has bundled a command line tool,
mutool
. To extract text from a PDF with this tool, use:will emit the extracted text to
<stdout>
. Use-o filename.txt
to write it into a file.Fifth: PDFLib's Text Extraction Toolkit (TET) (best of all... but it is PayWare)
TET, the Text Extraction Toolkit from the pdflib family of products can find the x-y-coordinate of text content in a PDF file (and much more). TET has a commandline interface, and it's the most powerful of all text extraction tools I'm aware of. (It can even handle ligatures...) Quote from their website:
In my experience, while it's does not sport the most straight-forward CLI interface you can imagine: after you got used to it, it will do what it promises to do, for most PDFs you throw towards it...
And there are even more options:
podofotxtextract
(CLI tool) from the PoDoFo project (Open Source)calibre
(normally a GUI program to handle eBooks, Open Source) has a commandline option that can extract text from PDFsAbiWord
(a GUI word processor, Open Source) can import PDFs and save its files as .txt:abiword --to=txt --to-name=output.txt input.pdf
我不确定 GhostScript 是否可以接受坐标,但您可以将 PDF 转换为图像并将其作为从给定坐标裁剪的子图像或作为整个图像连同坐标发送到 OCR 引擎。某些 OCR API 接受矩形参数来缩小 OCR 区域。
查看 VietOCR 的工作示例,该示例使用 Tesseract 作为 OCR 引擎,GhostScript 作为 PDF 到图像转换器。
I'm not sure GhostScript can accept coordinates, but you can convert the PDF to a image and send it to an OCR engine either as a subimage cropped from the given coordinates or as the whole image along with the coordinates. Some OCR API accepts a rectangle parameter to narrow the region for OCR.
Look at VietOCR for a working example, which uses Tesseract as its OCR engine and GhostScript as PDF-to-image converter.
Debenu Quick PDF Library 可以从页面上定义的区域提取文本。 SetTextExtractionArea 函数允许您指定 x 和 y 坐标,然后您还可以指定该区域的宽度和高度。
然后是GetPageText 函数以从该定义的区域中提取文本。
下面是一个使用 C# 的示例(尽管该库是多平台的,可以与许多不同的编程语言一起使用):
使用 GetPageText 也可以仅返回位于该区域的文本或位于该区域的文本以及信息关于文本的字体,例如名称、颜色和大小。
Debenu Quick PDF Library can extract text from a defined area on a page. The SetTextExtractionArea function lets you specify the x and y coordinates and then you can also specify the width and height of the area.
Then the GetPageText function can be called immediately after this to extract the text from that defined area.
Here's an example using C# (though the library is multi-platform and can be used with many different programming languages):
Using GetPageText it is also possible to return just the text located in that area or the text located in that area as well as information about the text's font such as name, color and size.