我正在尝试解析一堆PDF,其中有一段似乎是文本的内容,但实际上只是一堆嵌入的形状,看起来像文本,所以提取'无法在iTextSharp中使用普通的PdfTextExtractor对象。
由于我试图提取的文字只是10个可能的单词之一,而不是实际上“阅读”这个单词(或者更确切地说,“单词形式的形状”),我想我可以确定单词是什么是通过将它与我已经确定的其他人进行比较。
我的第一个问题是,我如何进入PDF的这一部分?我如何使用iText解析文档以深入到这个形状对象?在我的所有文档中都有一个常见的单词开头,所以我认为我可以用它作为一个里程碑,知道我何时在正确的区域,但我如何迭代文档的所有形状?< / p>
然后,一旦我找到它,我如何识别其他单词的特定形状(线段?)以确定我正在看的字母?
为了说明问题,这是一个类似的场景 - 我需要解析的部分是地图图例,它将是PDF的一个区域,如下所示:
- 传奇 -
如果我找到代表单词'LEGEND'的形状,我知道我在正确的区域,然后我可以尝试确定图例中的单词(因为它是大约10个单词的有限列表)。但是我该怎么做?
我正在使用.NET,因此任何C#或VB.Net代码示例都适用于我。
答案 0 :(得分:0)
你很遗憾。
处理此类事情的唯一合理方法是通过OCR。光学字符识别。在谷歌代码上至少有一个像样的开源OCR包。
Pdf Parser软件包还没有以任何方式处理艺术线条。除非您想自己编写支持,否则这样就可以了。
一旦你对10个单词中的每个单词都有“知道好”的例子,你可能就能够找到一个能够一致地检测每个单词的RegEx。除非您的“文本”始终使用相同的“字体”,否则这将失败。
您必须查找特定系列的lineTo / curveTo / moveTo命令。
您必须忽略RegEx中的坐标,但如果需要确定给定单词的边界框,请返回并解析它们。
有趣的趣味。