任何人都可以告诉我如何从PDF中提取所有文本和图像。我能够在场景中提取图像,我使用Google Docs创建了一个包含少量文本和2个png图像的PDF。但是,我无法从样本pdf中提取图像。
我尝试了以下内容:
在Ruby中:
1)" pdf-reader"宝石,它支持只提取几种格式的图像。
2)" docsplit" gem,它只能提取文本而无法提取图像。
命令行实用程序:
1)" pdfimages"它支持仅提取几种格式的图像。
Java库:
1)" pdfbox"它只支持提取少量几种图像格式。
答案 0 :(得分:3)
提取文字
pdftotext -layout the.pdf -
提取所有网页&#39;文字为<stdout>
。
pdftotext -layout -nopgbrk the.pdf the-3-5.txt
提取所有网页&#39;要归档the.txt
的文字,并且不要插入表示新网页的这些讨厌的 ^L
字符。
pdftotext -f 3 -l 5 -layout the.pdf -
提取网页&#39; 3--5文本到-3-5.txt。
提取图片
pdfimages -f 4 -l 7 -j the.pdf myprefix--
将第4页到第7页的所有图像作为JPEG格式提取(如果可能!),并使用前缀myprefix---
命名。
如果无法以JPEG格式提取,则图像将被提取为纯光栅PPM
或PGM
。
最新版本的pdfimages
(Poppler fork)允许您指定-png
(以及更多)以将所有图像作为PNG。
使用最新版本的pdfimages
为您提供以下选项:
$ pdfimages -h
pdfimages version 0.33.0
Copyright 2005-2015 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdfimages [options] <PDF-file> <image-root>
-f <int> : first page to convert
-l <int> : last page to convert
-png : change the default output format to PNG
-tiff : change the default output format to TIFF
-j : write JPEG images as JPEG files
-jp2 : write JPEG2000 images as JP2 files
-jbig2 : write JBIG2 images as JBIG2 files
-ccitt : write CCITT images as CCITT files
-all : equivalent to -png -tiff -j -jp2 -jbig2 -ccitt
-list : print list of images instead of saving
-opw <string> : owner password (for encrypted files)
-upw <string> : user password (for encrypted files)
-p : include page numbers in output file names
-q : don't print any messages or errors
[....]
您还想要更多图片格式?如果您需要其他格式,请使用ImageMagick的convert
命令。
此外,没有其他&#34;格式&#34;嵌入PDF中。
基本上,嵌入在PDF中的图像的唯一压缩方法是:
/DCTDEcode
过滤器作为PDF查看器的解压缩提示),/JBIG2Encode
),CCITTFaxDecode
)和JPXDecode
)。 PDF中嵌入的所有其他图像基本上都是纯粹的栅格数据(PPM
或PGM
),其PDF内部压缩是其他标准压缩方法之一可用于一般流压缩:
/FlateDecode
(ZIP / Deflate算法),/LZWDecode
(Lempel-Ziv-Welch算法)和/RunLengthDecode
。我现在才有时间查看您的链接示例PDF,抱歉。
正如@mkl在他的评论中写道,看起来像图像 不是 总是PDF技术用语中的图像。例如,在PDF的第7页上有(着名的)虎头。这完全由向量元素组成,向量元素内嵌到页面的/Contents
流中。
所描绘的国际象棋棋盘也是如此。
我相信虎图像是在几十年前(Adobe Illustator?)的帮助下设计的,当它刚刚发布并导出到EPS时。可能情况下的PDF查看器现在可以从其他内容中识别内联向量元素(可以是简单的水平线)。除非这些向量元素是&#34;分组&#34;进入一个XObject(pdfimages
无法提取,但这将有助于手动隔离和提取......)
这些向量元素不能由我所知的任何(免费和开源软件或免费的闭源软件)工具自动提取。
A&#34;真实&#34; PDF用语中的图像是像素数据的矩形。这些是唯一可以通过pdfimages
等工具提取的图像类型。