是否有某种方法可以使用PDFBox为特定图像提取“替代文字”?
我有一个PDF文件,如http://www.w3.org/WAI/GL/2011/WD-WCAG20-TECHS-20110621/pdf.html#PDF1所述,已将替换文字添加到图像中。使用PDFBox我可以通过PDFDocument.getDocumentCatalog()。getAllPages()[iterator] .getResources.getImages()找到通过对象模型到图像本身(PDXObjectImage)的方式但是我看不到任何从图像中获取的方法本身就是它的备用文本。
可以在http://dl.dropbox.com/u/12253279/image_test_pass.pdf找到一个小样本PDF(带有指定了一些替换文字的单个图像)(应该说“这是图像的替代文字。”)。
答案 0 :(得分:2)
我不知道如何使用PDFBox完成此操作,但我可以告诉您,此功能与PDF规范中称为逻辑结构/标记PDF的部分相关,并不是每个PDF工具都完全支持出那里。
假设您使用的工具支持它,您将需要按照4个主要步骤来检索此信息(我将使用您发布的示例PDF文件进行以下说明)。
假设您可以访问PDF文件的内部结构,则需要:
1-解析页面内容,找到包含您感兴趣的图像的Tag元素的MCID编号。
网页内容:
BT
/P <</MCID 0 >>BDC
/GS0 gs
/TT0 1 Tf
0.0004 Tc -0.0028 Tw 10.02 0 0 10.02 90 711 Tm
(This is an image test )Tj
EMC
ET
/Figure <</MCID 1 >>BDC
q
106.5 0 0 106.5 90 591.0599976 cm
/Im0 Do
Q
EMC
你的形象:
2-在页面对象中,检索键StructParents。
3-现在检索结构树(Catalog对象的关键StructTreeRoot,它是每个PDF文件中的根对象),并在其中检索ParentTree。
4- ParentTree以一个数组开头,您可以在其中找到元素对(有关详细信息,请参阅PDF规范中的数字树)。在此特定树中,每对中的第一个元素是对应于在步骤2中检索的StructParents键的数值,第二个元素是对象数组,其中索引对应于在步骤1中检索到的MCID值。因此,您将在此处搜索与图像的MCID值对应的元素,您将找到一个PDF对象。在此对象中,您将找到备用文本。
看起来很简单,不是吗?
本回答中使用的工具:
PDF Vole(基于iText)
Amyuni PDF Analyzer