为什么从扫描文档,文本可以提取,但不是图像

时间:2013-02-12 22:08:40

标签: pdf pdfbox xpdf

我之前在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。我使用pdftotextpdfimages再次尝试了。提取文本,但pdfimages输出5个图像文件,这些文件都是pdf的所有页面(与PDFBox相同)。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

这些图像进一步被OCR所有,并且所得到的文本被无形地添加到页面中,这允许选择,复制和放大。粘贴。

E.g。看一下第885页的顶部:

top of your page 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,这是既不填充也不冲程文本(不可见)。(第9.3.6节 ISO 32000-1:2008

中的文字渲染模式
(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.

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