現在、pdfファイルからテキストを抽出するプログラムを作成しています。pdfは複数ページにまたがっていることもあるため、pyPDFを使用して1ページずつに分割しています。
ただ、pyPDFで処理をした場合、稀に分割後の画像データが文字化けしてしまうことがあります。参考資料には原因と対処方法が書かれていました。
しかし、対処方法についてはpdf作成時の対処方法しか記入されていませんでした。プログラム側での対処方法はないのでしょうか。
エンコードやデコードについて調べてみたのですが、現状わかっていない状況です。
文章が下手で申し訳ありませんが、文字化けについて解決策があれば教えていただきたいです。
以上、よろしくお願いします。
<補足>
pyPDFに原因があると思っていましたが、その後の画像データ変換時の処理のどこかで文字化けしていることがわかりました。コードは以下の通りです。
python
1pdfToImage = pdf2image.convert_from_path(pdfが保存されているパス) 2imgArray = np.asarray(pdfToImage[0]) 3pdfImage = cv2.cvtColor(imgArray, cv2.COLOR_RGB2BGR) 4cv2.imwrite("test.jpg", pdfImage)
どのような警告(あるいはエラー)が出たのか,PyPDF2を使わなければならないのか,分割したPDFが画像データになる理由,文字化けの理由がわかっているならばそれも追記をお願いしたいです.
PyPDF2を使って1ページずつにしたPDFに記載されてるtextが文字化けする場合がある,ということでしょうか?
回答ありがとうございます。分割したPDFの加工を行うため意図的に画像に変更しています。
また、ebal様のアドバイスを参考にもう一度
pdfの読み込み -> 分割 -> 画像変換 -> 保存の処理での出力(分割後のPDFと画像変換後のjpg画像)
を確認したところ、pyPDFの出力は問題なく、jpg画像の方に問題がありました。
ただ、他のデータで同様の処理をしたところ問題なくPDFがそのままjogに変換されているためなぜ文字化けしているのかの原因が分からない状態です。
わかりづらい文章となってしまい申し訳ありません。
該当コードについては追記いたしました。
以上、よろしくお願いします。
そういえば,'文字化け' と言っていますがこれはファイルがjpgとして破損した状態になるのか,それともjpg上の文字列が化けてるということでしょうか?
返答ありがとうございます。jpg画像による出力を追記しました。数字は問題なく出力されていますが、日本語の部分が四角になってしまいます。
日本語の部分が四角になる系統の問題はエンコーディングではなくフォント指定の問題では無いでしょうか.
実際に試してないので、情報提示のみです
https://blog.csdn.net/python_go/article/details/111187316
に書いてある二つのファイルの修正で、「gbk」を「cp932」に変えて、他はそのまま行えば、もしかしたら効果あるかもしれません
どんな副作用があるか分からないので、もし実施する場合は自己責任でお願いします
また、何かあったら元に戻せるように、修正を行う前に、修正前のファイルのコピーを保管しておくことをお勧めします
【追記】上記の対策は、
https://gammasoft.jp/support/pdf-file-read-warning-and-error/
の二つ目に書かれてる「PyPDF2.utils.PdfReadError: Illegal character in Name Object」に対するものです
質問の「<補足>」を読んだら、PyPDF2ではなくpdf2imageの問題のようですね
そうならば、上記対策は関係無い(効果無い)と思います
失礼しました
あなたの回答
tips
プレビュー