1

我之前在stackoverflow中问过类似的问题。我想问另一个相关的问题,所以我再次改写原来的问题。

PDFBox用来从 pdf 中提取图像和文本,可在skydrivescribd中找到。我有以下用于提取文本的代码:

 PDFTextStripper p = new PDFTextStripper();
 String thistext=p.getText(document);

哪个正确提取了文本。但是,当我尝试使用ExtractImages类从同一个 pdf 中提取图像时,生成的图像都是 pdf 的所有页面,而不是实际的图像(应该是 1)。

在我看来,pdf 可能是扫描文档。答案说the fact that it is scanned is your issue。我再次尝试使用pdftotextand pdfimages。文本被提取,但pdfimages输出5个图像文件,都是pdf的页面(同PDFBox)。

据我所知,光栅图像在 pdf 中存储为 Xobjects。当我用文本编辑器打开 pdf 文件时,我看到了以下 5 行:

<< /Type /XObject /Subtype /Image /Name /X /Width 2600 /Height 3799

这可能就是为什么将 pdfPDFBoxXPDF5 页作为图像文件输出的原因。那么如何从pdf中提取文本?是否有技术文档提到为什么(或如何)可以从这样的文档中提取文本,其中页面“据说”嵌入为 XObjects。我可以在我的报告中引用文档。

4

1 回答 1

2

在检查了您的 PDF 文件后,您的问题评论中的第一个猜测已得到确认...

您的示例文档经过扫描,基本上每页包含一个位图图像。当您放大文档时,您可以快速看到所有内容看起来都相当像素化。

所有图像的分辨率均为 2600x3799,并且是黑白的。

这些图像还经过 OCR 处理,生成的文本已被无形地添加到允许选择、复制和粘贴的页面中。

例如,看一下第 885 页的顶部:

页面顶部 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:此操作将文本呈现模式设置3既不填充也不描边文本(不可见)。( ISO 32000-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”和“%gust”开头。这实际上表明 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.

如您所见,许多特殊字符和公式尚未或未正确识别。

于 2013-02-15T11:49:20.397 回答