DeepLで翻訳したPDFから文章を抽出する(Python,Apache Tika)
はじめに
DeepLの無料版会員は月に3度までPDFやWORD文章などを翻訳にかけることが出来ます。
本記事の概要を下記3行にまとめます。
- DeepLで翻訳したPDFは保護がかかっており,印刷したり文章をカーソル上でコピーすることができない
- Python環境があればこれを抽出することができる
- DeepLの使用規約には抵触していないはずだが指摘されたら消します
参考サイト
Apatch Tikaというドキュメント分析・抽出ツールを使いますが関連する手法などについて下記を参考にしました。
今回はやりませんでしたが直接DeepLのAPIを叩くのも良いと思います。
抽出手順
環境設定
Windows10のAnaconda3のPython3.6の環境で実行しています。(古くてすみません)
抽出に用いるパッケージは下記コマンドでインストールできました。pipと混ぜるのが嫌な人は別で環境を立てたほうが良いと思います。
pip install tika
抽出と後処理
元のURLを参考にtxtへの書き出しをするプログラムを先に記します。
from tika import parser file_data = parser.from_file("extract-sample.pdf") # この部分でPDFを読み込み text_ = file_data["content"] # テキストを抽出 print(text_) # 確認 text = text_.replace("\n\n","") # 二重改行が多かったので置換して除去 with open("out.txt", "w", encoding="utf-8") as f: f.write(text) # 日本語を扱うのでUnicodeを指定して書き込み
parserが呼ばれている行で変換が行われ,初回実行時にはインストール画面のようなものが出現します。その際には下記のようなログが出ますが気にしなくて良さそうです。
2022-04-24 16:34:20,224 [MainThread ] [INFO ] Retrieving http://search.maven.org/remotecontent?filepath=org/apache/tika/tika-server/1.24/tika-server-1.24.jar to C:\Users\xxxx\AppData\Local\Temp\tika-server.jar. 2022-04-24 16:35:14,657 [MainThread ] [INFO ] Retrieving http://search.maven.org/remotecontent?filepath=org/apache/tika/tika-server/1.24/tika-server-1.24.jar.md5 to C:\Users\xxxx\AppData\Local\Temp\tika-server.jar.md5. 2022-04-24 16:35:15,777 [MainThread ] [WARNI] Failed to see startup log message; retrying...
また,出てきた文書は見た目をベースに改行などのスペーシングも文字として認識されており,私の文書のケースだと二重改行が目立ったので事前にReplaceしておきました。これもPythonを使う利点ですね。
余談:ですます変換
DeepLの翻訳結果は基本的にですます調になり,たまにである調が混ざるという調整が必要なものになります。
WORDにはですます調を検知することはできますが,これを一括で変換してくれないので下記のサイトを使うのが今のところ一番楽そうです。