我以前在stackoverflow中问过一个类似的问题。我想问另一个相关的问题,所以我再次改写了原来的问题。
我正在使用PDFBox
从pdf中提取图像和文本,可在skyDrive和scribd中使用。我有以下提取文本的代码:
PDFTextStripper p = new PDFTextStripper();
String thistext=p.getText(document);
但是,当我尝试使用ExtractImages
类从同一个pdf中提取图像时,生成的图像都是pdf的所有页面,而不是实际图像(应该是1)。
在我看来,pdf可能是一个扫描的文档。答案说它被扫描的事实是你的问题
。我再次尝试使用pdftotext
和pdfimage
。文本被提取,但pdfimage
输出5个图像文件,它们都是pdf的页面(与PDFBox
相同)。
据我所知,光栅图像在pdf中以Xobject的形式存储。当我用文本编辑器打开pdf时,我看到了以下行的5个外观:
<< /Type /XObject /Subtype /Image /Name /X /Width 2600 /Height 3799
这可能就是为什么PDFBox
和XPDF
输出5页pdf作为图像文件。那么文本是如何从pdf中提取的呢?有没有一个技术留档提到为什么(或如何)可以从这样的文档中提取文本,其中页面被“假定”嵌入为XObject。我可以在我的报告中引用留档。
在检查了你的PDF文件后,对你问题的评论中的第一个猜测已经得到证实…
您的示例文档被扫描,基本上每页包含一个位图图像。当您放大文档时,您可以很快看到所有内容看起来都相当像素。
所有图像的分辨率为2600x3799,是黑白的。
此外,这些图像已被OCR识别,生成的文本已被无形地添加到页面中,允许选择、复制
例如。看看第885页的顶部:
它的内容流是这样开始的:
1 0 0 1 -0.5998 -0.4801 cm
1 1 1 rg
1 i
/RelativeColorimetric ri
/GS0 gs
0 0 469.2 684.7 re
f
q
467.9972 0 0 683.8015 0.6014 0.4492 cm
/Im0 Do
Q
这里插入 /Im0页面图像
1 0 0 1 0.5998 0.4801 cm
0 0 0 rg
BT
/TT0 1 Tf
3 Tr 9.8 0 0 10.4 35.8002 640.4199 Tm
这里准备添加文本;特别是看看3 Tr
:这个oparation将文本渲染模式设置为3
,它既不是填充也不是描边文本(不可见)。(ISO32000-1:2008中的9.3.6文本渲染模式部分)
(A )Tj
/TT1 1 Tf
-0.01 Tc 8.8 0 0 9.5 43.4002 640.4199 Tm
(%gust )Tj
在这里,您看到添加了文本,以“A”和“%风”开头。这实际上表明OCR的结果似乎没有被正确检查,因为它应该是“八月”。低质量的文本信息继续:
A %gust , 1978 SHORT PAPERS 885
where
and also
Similarly for B. Also,
T, = AY-l T
as a result of the adiabatic cooling of the vapour.
Stage 2:
Here a volume of vapour and a volume of liquid I are removed and replaced with an
equal volume of air containing concentrations Y and s of A and B, respectively. Of course,
r or s may either or both be negligibly small, with subsequent simplification.
如您所见,许多特殊字符和公式没有或没有被正确识别。