使用 pdfminer 将 pdf 文件翻译为文本时出现奇怪的字符

问题描述 投票:0回答:2

我使用 pdfminer 翻译了一个 pdf 文件,我意识到在几种情况下我发现了一个奇怪的非 ascii

'fi'
替换了“fi”。

解决这个问题的一个简单方法似乎是

 content=re.sub('fi','fi',content)

但是,我只能纠正这个问题,因为我注意到了它,值得一提的是,注意到它是非常困难的。我之所以注意到,是因为我正在用乳胶写一份关于我的代码由于 Spacy 向“强化”(使用此角色)提供的错误分类而导致的错误的报告。此时,我意识到 dvi 文件(乳胶语言的输出)失败了。当我检查时,我发现这两个字符“fi”被其他字符替换了。

这似乎可能是一种 pdf 字体问题。

是否有一系列这样的问题可供我在任何 nlp 活动之前预测并自动解决?或者也许是一种使用 Spacy 来检查给定单词是否未知的方法(我相信这个带有奇怪替换的“强化”单词对于 spacy 来说是未知的)?或者尚未在翻译文本中查找非 ASCII 字符?

以下哪些解决方案有效?

pdf nlp spacy pdfminer ligature
2个回答
0
投票

最后,我现在已经自动替换了所有连字:

        if(isinstance(content, str)):
            content=re.sub(r'\uA732', 'AA', content)
            content=re.sub(r'\uA733', 'aa', content)
    
            content=re.sub(r'\u00C6', 'AE', content)
            content=re.sub(r'\u00E6', 'ae', content)
    
            content=re.sub(r'\uA734', 'AO', content)
            content=re.sub(r'\uA735', 'ao', content)
    
            content=re.sub(r'\uA736', 'AU', content)
            content=re.sub(r'\uA737', 'au', content)
            
            content=re.sub(r'\uA738', 'AV', content)
            content=re.sub(r'\uA739', 'av', content)
    
            content=re.sub(r'\uA73A', 'AV', content)
            content=re.sub(r'\uA73B', 'av', content)
    
            content=re.sub(r'\uA73C', 'AY', content)
            content=re.sub(r'\uA73D', 'ay', content)
            
            content=re.sub(r'\u1F670', 'et', content)        
    
            content=re.sub(r'\uFB00', 'ff', content)
            content=re.sub(r'\uFB03', 'ffi', content)
            content=re.sub(r'\uFB04', 'ffl', content)
            content=re.sub(r'\uFB01', 'fi', content)
            content=re.sub(r'\uFB02', 'fl', content)
    
            content=re.sub(r'\u01F6', 'Hv', content)
            content=re.sub(r'\u0195', 'hv', content)
    
            content=re.sub(r'\u2114', 'lb', content)
            
            content=re.sub(r'\u1EFA', 'lL', content)
            content=re.sub(r'\u1EFB', 'll', content)
    
            content=re.sub(r'\u0152', 'OE', content)
            content=re.sub(r'\u0153', 'oe', content)
    
            content=re.sub(r'\uA74E', 'OO', content)
            content=re.sub(r'\uA74F', 'oo', content)
            
            content=re.sub(r'\uFB06', 'st', content)
            
            content=re.sub(r'\uFB05', 'ft', content)        
            
            content=re.sub(r'\uA728', 'TZ', content)
            content=re.sub(r'\uA729', 'tz', content)
            
            content=re.sub(r'\u1D6B', 'ue', content)
            content=re.sub(r'\uAB63', 'uo', content)        
            
             content=re.sub(r'\uA760', 'VY', content)
             content=re.sub(r'\uA761', 'vy', content)        

0
投票

使用 pdfminer 翻译代码的地方

© www.soinside.com 2019 - 2024. All rights reserved.