我正试图解析一堆PDF格式,它们有一段看起来是文本,但实际上只是一堆看起来像文本的嵌入形状,所以使用iTextSharp中的普通iTextSharp对象提取“文本”是不可能的。
由于我试图提取的文本是仅有的10个可能的单词之一,而不是实际上“阅读”这个单词(或者更确切地说,‘以一个单词的形式’形状‘),我想我可以通过与我已经识别的其他单词进行比较来确定这个单词是什么。
我的第一个问题是,我怎样才能到达PDF的这一部分?如何使用iText解析文档以深入到此形状对象?在我所有的文档中都有一个常见的词开始这个部分,所以我想我可以用它作为一个地标来知道我什么时候在正确的区域,但是我如何迭代文档的所有形状呢?
然后,一旦我找到它,我如何识别特定的形状(线段?)来决定我在看什么字母?
为了说明这个问题,这里有一个类似的场景--我需要解析的部分是一个地图图例,它将是PDF的一个区域,如下所示:
-传说--
如果我找到代表‘传奇’这个词的形状,我知道我在正确的区域,然后我可以尝试确定什么词在传说中(因为这是一个大约10个单词的有限列表)。但我该怎么做呢?
我正在使用.NET,所以任何C#或VB.Net代码示例都应该适合我。
发布于 2011-09-13 18:00:57
我很同情你。
处理这类事情的唯一合理方法是通过OCR。光学字符识别至少有一个不错的开源OCR包可以在google代码上找到。
Pdf解析包还没有以任何方式处理线条艺术。所以,除非你想自己写支持书,否则就不写了。
一旦你对你的10个单词中的每一个都“知道得很好”,你的可能会想出一个RegEx来一致地检测每一个单词。这将失败,除非您的“文本”总是在相同的“字体”。
您必须查找一系列特定的lineTo/curveTo/mo否决权命令。
您必须忽略RegEx中的坐标,但如果需要确定给定单词的边框,则返回并解析它们。
有趣的乐趣。
https://stackoverflow.com/questions/7362647
复制相似问题