我目前正在验证标签PDF文件中内容的正确顺序。
是否可以通过编程方式提取带标签的PDF文件的阅读顺序号?
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9RRUJTTC5wbmcifQ==” alt =“图像样本”>
我已经尝试将带标签的PDF转换为XML,但是我无法弄清楚哪些标签属于某个文本。
我已经尝试了以下库:
但是我找不到任何获得其阅读顺序编号的方法。
真的有可能吗?预先感谢!
您可以使用PdfPig(.Net)库提取标记为pdf的标记内容树。我的理解是阅读顺序由标记内容标识符(MCID)指示。
如果标记的内容元素不包含MCID(如分页元素),则MCID设置为-1。
每个MarkedContentElement
将包含属于它的字母,图像和路径:
using UglyToad.PdfPig;
[...]
using (PdfDocument document = PdfDocument.Open(pathToFile))
{
for (int p = 0; p < document.NumberOfPages; p++)
{
var page = document.GetPage(p + 1);
// extract the page's marked content
var markedContents = page.GetMarkedContents();
var orderedMarkedContents = markedContents
.OrderBy(mc => mc.MarkedContentIdentifier);
foreach (var mc in orderedMarkedContents)
{
// do something
}
}
}
如果要将结果提取为XML,则可以查看PageXmlTextExporter
类。请查看wiki,以获取有关ITextExporter
和IReadingOrderDetector
的更多信息。
注意:我是这个图书馆的积极贡献者。