在加标签的 PDF 中提取阅读顺序序列

Extract Reading Order Sequence in a Tagged PDF

我目前正在验证加标签的 PDF 文件中内容的正确顺序。

有没有办法以编程方式提取带标签的 PDF 文件的阅读顺序号?

我试过将带标签的 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,你可以看看PageXmlTextExporterclass。查看 wiki 了解有关 ITextExporterIReadingOrderDetector 的更多信息。

注意:我是这个库的积极贡献者。