从矩形中提取文本时的 ItextSharp anagram 输出

ItextSharp anagram output when extract text from rectangle

我正在尝试使用 ItextSharp 从矩形中提取文本,它适用于文档中的几乎所有部分,但某些特定区域除外。这些区域是简单的粗体大写标题和简单的内容,字体比文档的其余部分(均为大写)更小。在这些区域,我得到的是 selected 文本的字谜,而不是正确的单词。

例如单词"RELEASE"被骑成"ERLEASE","VOYAGE"变成"EGAYVO",句子"FURTHER CHARGES"变成"FHTRU E R CHAGR E S"

奇怪的是,如果我尝试使用 SimpleTextExtractionStrategy 浏览整页,我会得到正确的文本。

pdf 的字体是经典的 Arial,我用于提取的策略取自 Whosebug(rect 它由 args 传递):

    _pdfRd = New PdfReader(_pdfPath)
    Dim output As String()
    Dim nrPag as Integer = 1
    Dim filter As RenderFilter = New RegionTextRenderFilter(rect)
    Dim strategy As FilteredRenderListener
    Dim locStrategy As New LocationTextExtractionStrategy
    strategy = New FilteredTextRenderListener(locStrategy, {filter})
    output = GetTextFromPage(_pdfRd, nrPag, strategy).Split(vbLf)
    _pdfRd.Close()

我尝试使用其他文档,效果很好,但我无法使用其他文档重现此问题。

我担心我的代码,我也尝试过这个策略:http://www.schiffhauer.com/read-text-in-a-pdf-in-c-with-itextsharp/ 但是结果是一样的

我在阅读过程中遗漏了什么,或者这是与我的 pdf 相关的问题?

更新:如果我select一个错误单词的单个字母,输出为空字符串,如果我select多个字母在一起,也会发生这种情况,我只获得(字谜)输出如果我 select 整个单词。 这真的很奇怪,例如我注意到如果我有单词 "CARGO RELEASE",而我 select 只有一个矩形 "GO" 或任何其他子字符串我什么也得不到,但是如果我 select "CARGO" 我得到 "GRACO ERLESAE" 并且我没有 select 编辑第二个单词,只有第一个。

您是否尝试过自定义工作 SimpleTextExtractionStrategy,而不是整页而是矩形?

您可以在此处的 ghitub 项目中找到完整代码:https://github.com/itext/itextsharp/blob/75f05dd7d87797b86c44649f5f96df2d90d730e8/src/extras/itextsharp.tests/iTextSharp/text/pdf/parser/SimpleTextExtractionStrategyTest.cs