次のように、PDFminer を使用して PDF ドキュメントからテキストを読み取る Python スクリプトがあります。
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
file_pointer = file(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(file_pointer, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True):
interpreter.process_page(page)
file_pointer.close()
device.close()
str = retstr.getvalue()
retstr.close()
return str
この文字列 str が出力されるときにテキストが表示されるため、これはうまく機能しているように見えます。ただし、詳しく調べてみると、生成されたテキストを調べると「!」に変わる複数の文字 (つまり、「ff」、「fi」、「fl」、「ff」) がいくつかあります。
調査の結果、これらの文字にはすべて「合字」があり、2 つの文字を結合したバージョンに置き換えることができることがわかりました。
これらの合字は明らかに ASCII では見つかりませんが、Unicode で表現できることがわかりました。
テキスト内の「!」を正しい合字に変換するために、さまざまな文字エンコーディングを試してみましたが、うまくいきませんでした。
おそらく、これは私の PDF ファイルまたは PDFminer 自体に関係していますか?