我之前在stackoverflow问了一个类似的问题。我想问另一个相关的问题,所以我再次重新提出原来的问题。
我使用PDFBox
从pdf中提取图片和文字,可在skydrive和scribd中找到。我有以下代码用于提取文本:
PDFTextStripper p = new PDFTextStripper();
String thistext=p.getText(document);
正确提取了文本。但是,当我尝试使用ExtractImages
类从相同的pdf中提取图像时,生成的图像是pdf的所有页面,而不是实际图像(应该是1)。
在我看来,pdf可能是扫描文件。答案是the fact that it is scanned is your issue
。我使用pdftotext
和pdfimages
再次尝试了。提取文本,但pdfimages
输出5个图像文件,这些文件都是pdf的所有页面(与PDFBox
相同)。
据我所知,光栅图像在pdf中存储为Xobjects。当我用文本编辑器打开pdf时,我看到了以下5行的出现:
<< /Type /XObject /Subtype /Image /Name /X /Width 2600 /Height 3799
这可能是PDFBox
和XPDF
输出5页pdf作为图像文件的原因。那么如何从pdf中提取文本?是否有技术文档提到为什么(或如何)从这样的文档中提取文本,其中页面被“假定”嵌入为XObjects。我可以在报告中引用文档。
答案 0 :(得分:2)
检查了您的PDF文件后,您的问题评论中的第一个猜测已经确认......
您的示例文档已被扫描,基本上每页包含一个位图图像。当您放大文档时,您可以快速看到所有内容看起来都非常像素。
所有图像的分辨率均为2600x3799,为黑白色。
这些图像进一步被OCR所有,并且所得到的文本被无形地添加到页面中,这允许选择,复制和放大。粘贴。
E.g。看一下第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.
如您所见,许多特殊字符和公式未被正确识别。