📄

DeepLR: 変な改行やハイフネーションを修正するVSCodeプラグイン

2023/09/10に公開

概要

DeepL Refine

PDF をコピったら見たままの改行がコピーされるし、ハイフネーションがあるしで、DeepL で訳すのが面倒くさいもんで、 VSCode プラグイン作った。

改行したらスペースを入れるという当たり前のことをし忘れていたので0.0.2にアップデート。

背景

英語が読めません。どうも、nodamushiです。

さて、PDFの文章とかを DeepL で訳そうとコピーして貼り付けると、改行が変に入ったり、ハイフネーションがあったりして、うまいこと訳してくれません。マジめんどいです。

ChatGPT 様はわりと PDF の内容をそのまま貼り付けても読んでくれるんだけど、 DeepL はうまく訳してくれません。金払ってるのに。

PDF をまるごとアップロードして訳すサービスも DeepL にはありますが、ぶっちゃけ DeepL の訳って全く当てになりません。あいつ、1ポンドを1kgって訳しやがったぞ。どういうことだよ。

というわけで、DeepL が訳した内容をベースにもう一度英語を読むことで理解していくスタイルです。なので、PDFとかまるごとアップロードすると、原文との対応がわからない(わかりにくい)状態になって、残念なことになります。

私は英語を頭からすんなりと読めない(文法に分解しないとわからない雑魚)ですが、それでも、たとえ信用できなくても補助輪があるのとないのじゃ進む速度が違うんですよ……。

Shaper

さて、このPDFからコピった変な改行やハイフネーションを削除するツールとして Shaper があります。片岡 駿之介さん作でよくお世話になっております。

が、やっぱり面倒くさい。

Shaper に雑に突っ込んじゃうと、リストとかも全部消えちゃうので、改行してほしくないところで分離してペタペタ DeepL に貼っていくのはしんどい。

PDF によっては、サイドに有る変な文字やら数字やらまでコピーされたりで、一度 VSCode で変な文字を消してから……ってやってると、もう全部 VSCode でなんとかならないかと前々から思っていました。

で、いい加減なんとかしようと思って今朝からプラグイン開発をしてみました。

文章整形

PDF からコピーした文字列が以下のようなものだったとします。

aaaa
bbbb ccc-
ddd
- list
• list2

lineline

lineline

上記の文章は、一度以下のような文章に整形されます。

なお、「DeepLR:選択範囲の改行を削除」というコマンドで同じ結果を得られます。

aaaa bbbb cccddd
- list
• list2
lineline
lineline
  • -•で始まる行はリストとみなし、改行を維持
  • 空行は改行に(連続して空行があっても無視)
  • アルファベットに接続する-で改行している場合は、そのハイフンを消す

ここらへんの挙動は設定から変えられます。

翻訳の実行

上記の文章整形を行った後、実際に DeepL API を呼び出して変換を行います。翻訳の実行をするには、後述する DeepL API 認証キーを設定する必要があります。

「DeepLR:言語1に翻訳(改行削除)」、「DeepLR:言語2に翻訳(改行削除)」「DeepLR:言語を選択して翻訳(改行削除)」「DeepLR:最後の言語に翻訳(改行削除)」のコマンドで翻訳を行います。

なお、コマンドは文字が選択されていないと表示されません。

言語1、言語2は設定で指定できるデフォルトの翻訳先言語です。デフォルトでは言語1は日本語、言語2はen-USになっています。

(改行削除)がないコマンドは、選択範囲の文字列をそのまま翻訳します。

翻訳すると、翻訳前の文章と翻訳後の文章を結合した文章で、選択範囲の内容を置き換えます。

これは、私が元の文章を見ながら再度自分で訳す読み方をしているからですね。

翻訳前の文章が必要ない場合は、設定から出力させないようにも出来ます。

DeepL API

DeepL API を使用するには認証キーを設定する必要があります。

この認証キーはアカウントの画面 の下の方に アカウントの種類によってはあります

今朝まで全く知らなかったんですが、 DeepL は Rest API を呼び出すのに Develper 専用のアカウントが必要 です。

私、一応お金払って DeepL Pro Starter なので当然呼び出せるだろうと思ってたんですが、呼び出せませんでした。どういうことだってばよ。

(´・ω・`)……

どういうことだってばよ。無料アカウントで使えるのに、お金払っててなんで使えないん?無料アカウントの制限の1/10でも良いから使わせてよ……。

当然、無料版の DeepL API Free はデータのセキュリティは担保されません。どう使われるのかはわからないってことですね。

会社のアカウントも、Proのチーム利用なので、APIは使えません。当然会社で DeepL API Free なんて使うわけには行かないので、せっかく作ったのに仕事には使えない代物になってしまいました。

いや、「DeepLR:選択範囲の改行を削除」は DeepL API がなくても動くから、 Shaper を飛ばせるというメリットはあるけど……。

まとめ

というわけで、頑張って作ってみましたし、使えるとかなり便利なのですが、私は使える範囲がだいぶ狭くなってしましました。

ていうか、 DeepL は Firefox のプラグインも出さないし(出たけどすぐ消えた)、なーんかなー……

私しか使わない(私も使わないかも)ようなプラグインだろうけど、もし誰か使ってみて不具合等が出たら、GitHubのイシューと Twi……Xでメンション飛ばしてくれると反応します。

Discussion