[英]iTextSharp PDF Reader Accuracy
从多页扫描的pdf读取文本时,你们中的任何人是否有iTextSharp准确性的经验?
事情是我尝试使用Adobe Reader中的基本搜索功能以及iTextSharp来读取pdf。
itextsharp设法找到给定单词出现的大约50%,而adobe则为100%(我称之为)
[iTextSharp 1000 occ // Adobe Reader >2000]
这是一个已知的“问题”吗?
编辑:我应该补充:我搜索的时候它已经被占用了。
正如@ChrisHaas已经解释的那样,没有代码和PDF样本就很难具体说明。
首先,说itextsharp设法找到给定单词的大约50%的出现是有点误导,因为iText(Sharp)不会直接公开在PDF中查找特定文本的方法,因此实际上找到了0%。 它仅为文本提取提供了一个框架和一些简单的示例。
使用此框架认真搜索给定单词需要的不仅仅是应用那些简单的示例用法(由SimpleTextExtractionStrategy
和LocationTextExtractionStrategy,
在使用PdfTextExtractor.GetTextFromPage(myReader, pageNum)
时也可以在PdfTextExtractor.GetTextFromPage(myReader, pageNum)
与某些Contains(word)
致电。 你必须:
创建更好的文本提取策略
有更好的算法来识别哪些字形属于哪一行; 例如,对于带有OCR文字的扫描页面,样本策略可能会完全失败,其文字行不是100%笔直,而是最小程度地升序;
识别穷人的粗体(两次印刷同一封信,并以很小的偏移量获得粗体字符的印象)和类似的结构,并相应地对其进行转换;
创建一个文本规范化
解决连字;
统一语义上相同或相似字符的替代字形;
标准化提取的文本和您的搜索词,然后搜索。
此外,正如@ChrisHaas所提到的,必须特别注意文本中的空格。
如果您牢记这些条件创建基于iText的文本搜索,那么肯定会获得可接受的命中率。 要获得与Adobe Reader一样好的性能是一项艰巨的任务,因为他们已经在此功能上投入了很多资源。
为了完整起见,您不仅应该搜索页面内容和从那里引用的所有内容,还应该搜索可能包含相当多文本内容的注释,例如,在出现免费内容的情况下,它们甚至可能看起来像是页面的一部分文字注释。
如果不了解您所处情况的具体信息(有问题的PDF,使用的代码等),我们将为您提供过多帮助。
但是我可以告诉你,iTextSharp具有更多的文字提取器。 由于PDF中的文本可能并且通常是非连续且非线性的,因此iTextSharp会采用任何连续字符并构建我们认为的单词和句子。 然后,它还会尝试合并看起来“在同一行上几乎是同一行”并且执行相同操作的字符(例如,与OCR所用文本经常成微小角度的文本)。 还有一些“空格”应该是简单的ASCII 32个字符,但通常不是。 iTextSharp付出了更多努力,并尝试计算是否应将两个文本行用空格分隔。
Adobe可能还有更多的启发式方法,可以对文本进行更多猜测。 我的猜测是,在组合非线性文本时,它们具有更大的猜测阈值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.