我假设在 Acrobat Reader 或其他 PDF 查看器中打开 PDF 时,您可以毫无问题地复制粘贴文本片段?
在尝试以编程方式从此类怪物文件中解析和提取文本之前(即使它只有 200 MB——对于 huuuuge 表中的简单文本,除非你有 200000 页......),我会这样继续:
- 首先尝试通过重新蒸馏来清理文件。
- 尝试使用不同的 CLI 工具将文本提取到 .txt 文件中。
这是几分钟的事情。编写一个 Ruby 程序来完成这项工作肯定需要几个小时、几天或几周的时间(取决于您对 PDF 文件格式内部结构的了解……我怀疑您还没有太多经验)。
如果“2”。工作,你可能已经完成了一半。如果它有效,您也知道使用 Ruby 以编程方式执行它是一项原则上可以解决的工作。如果“2”。不起作用,您知道以编程方式实现可能非常困难。
清理“Monster.pdf”:
我建议使用Ghostscript。如果您可以访问 Adobe Acrobat Distiller,您也可以使用它。
gswin32c.exe ^
-o Monster-PDF-sanitized ^
-sDEVICE=pdfwrite ^
-f Monster.pdf
(我很好奇与输入相比,单个命令会使您的输出 PDF 缩小多少。)
从 PDF 中提取文本:
我建议首先尝试pdftotext.exe
(来自 XPDF 人)。还有其他一些更不方便的方法,但这可能已经完成了这项工作:
pdftotext.exe ^
-f 1 ^
-l 10 ^
-layout ^
-eol dos ^
-enc Latin1 ^
-nopgbrk ^
Monster-PDF-sanitized.pdf ^
first-10-pages-from-Monster-PDF-sanitized.txt
这不会提取所有页面,而只会提取 1-10 个(用于概念证明,看看它是否有效)。要从每个页面中提取,只需省略-f 1 -l 10
参数即可。您可能需要通过将参数更改为-enc ASCII7
(或UTF-8
, UCS-2
) 来调整编码。
如果这不是快速简单的方法(因为有时会发生,原始 PDF 中的某些字体使用“自定义编码向量”),您应该提出一个新问题,描述您迄今为止发现的详细信息。然后你需要使用更大的口径来解决这个问题。