2022/04/23(土) [n年前の日記]
#1 [windows] 英文PDFの自動翻訳をAutoIt3を使って少し快適にした
Moho 13.5.3 の英文マニュアルpdfを眺めているのだけど、英文なのでなかなかツライ。できれば DeepL等の自動翻訳サービスを利用して、日本語に変換しつつ読みたい。
ただ、ちょっと問題があるというか、操作が面倒臭いというか…。
DeepLデスクトップアプリは、Ctrl+C を2回叩くと、クリップボード内のテキストを DeepL の入力欄に貼り付けて翻訳してくれるので…。フツーなら、PDF上のテキストを選択しておいて、Ctrl+C を2回叩けば自動翻訳できそうなものなのだけど。
しかし、PDFからテキストをコピーしようとすると、改行コードも入ってしまうので…。英文の途中で改行されている状態になってしまって翻訳結果がおかしくなってしまう。
今までは、DeepL に貼り付けてから、手作業で改行を削除して、再度翻訳させていたけれど、これがとても面倒臭い。こんなこと何度もやってられない。
そこで、AutoIt3 3.3.16.0 x86 を使って、作業を自動化してみた。処理内容は以下。
利用するには AutoIt3 のインストールが必要。
_Home - AutoIt
_AutoIt Downloads - AutoIt
以下のような感じで自動翻訳できる。
これで少しは英文pdfを眺めるのが楽になった…かな…。たぶん。
ところで。このくらいの処理なら、Python + PyAutoGUI を使ってもできるのではなかろうか…?
ただ、ちょっと問題があるというか、操作が面倒臭いというか…。
- 環境は Windows10 x64 21H2。
- Adobe Acrobat Reader DC 64bit 2022.001.20117、もしくは、Google Chrome 100.0.4896.127 64bit を使ってPDFを表示。
- 自動翻訳は、DeepL デスクトップアプリ 3.4.15088+fb3ba1f を利用。
DeepLデスクトップアプリは、Ctrl+C を2回叩くと、クリップボード内のテキストを DeepL の入力欄に貼り付けて翻訳してくれるので…。フツーなら、PDF上のテキストを選択しておいて、Ctrl+C を2回叩けば自動翻訳できそうなものなのだけど。
しかし、PDFからテキストをコピーしようとすると、改行コードも入ってしまうので…。英文の途中で改行されている状態になってしまって翻訳結果がおかしくなってしまう。
今までは、DeepL に貼り付けてから、手作業で改行を削除して、再度翻訳させていたけれど、これがとても面倒臭い。こんなこと何度もやってられない。
そこで、AutoIt3 3.3.16.0 x86 を使って、作業を自動化してみた。処理内容は以下。
- PDFビューアをアクティブにして、選択範囲を Ctrl + C でコピー。
- クリップボード内のテキストに対して、改行をスペースに置換。
- DeepLデスクトップアプリをアクティブにして、自動で貼り付けをする。(Ctrl+A、Delete、Ctrl+V を送る。)
利用するには AutoIt3 のインストールが必要。
_Home - AutoIt
_AutoIt Downloads - AutoIt
◎ スクリプトソース。 :
以下のような感じになった。
_copypaste_gui.au3
スクリプトの最初のあたりの、Dim $pdfviewer = 〜 を書き換えれば、Google Chrome に対しても使えると思う。たぶん。手元の環境では一応動いた。もし動かない時は、AutoIt に付属している Au3Info.exe か Au3Info_x64.exe を起動して、Google Chrome のクラス名を調べて反映させれば動くかもしれず。
_copypaste_gui.au3
; Copy text from PDF viewer, ; replace CRLF in clipboard with space, ; paste it into deepl. #include <GUIConstantsEx.au3> ; Dim $pdfviewer = "[CLASS:Chrome_WidgetWin_1]" Dim $pdfviewer = "[CLASS:AcrobatSDIWindow]" Dim $deeplclass = "DeepL" Dim $state Local $btn1, $btn2 Local $msg ; create GUI window Local $hGUI = GUICreate("Copy Paste", 280, 70) $btn1 = GUICtrlCreateButton("Translation", 8, 8, 180, 50) GUICtrlSetFont($btn1, 18, 700, 0, "Arial") $btn2 = GUICtrlCreateButton("Exit", 200, 8, 70, 28) GUISetState() ; HotKeySet("{ESC}", "Terminate") While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ; Click window close button ExitLoop EndIf If $msg = $btn1 Then ; Click button 1 trans() EndIf If $msg = $btn2 Then ; Click button 2 ExitLoop EndIf WEnd GUIDelete($hGUI) Exit 0 Func Terminate() GUIDelete($hGUI) Exit 0 EndFunc Func trans() ; Activate PDF viewer $state = WinActivate($pdfviewer) If $state = 0 Then MsgBox(0, "Error", "Error: Not found PDF viewer") Exit 0 EndIf Send("^c") ; send Ctrl+C Sleep(500) ; Replace CRLF in clipboard with space ClipPut(StringReplace(ClipGet(), @CRLF, " ")) ; Activate DeepL $state = WinActivate($deeplclass) If $state = 0 Then MsgBox(0, "Error", "Error: Not found DeepL") Exit 0 EndIf Send("^a") ; send Ctrl+A Sleep(250) Send("{DELETE}") ; Delete key Sleep(250) Send("^v") ; send Ctrl+V EndFunc
スクリプトの最初のあたりの、Dim $pdfviewer = 〜 を書き換えれば、Google Chrome に対しても使えると思う。たぶん。手元の環境では一応動いた。もし動かない時は、AutoIt に付属している Au3Info.exe か Au3Info_x64.exe を起動して、Google Chrome のクラス名を調べて反映させれば動くかもしれず。
◎ 使い方。 :
- copypaste_gui.au3 を実行。
- ボタンが2つ並んだウインドウが表示されるので、適当な位置に置く。
- Adobe Acrobat Reader DC と、DeepLデスクトップアプリを起動しておく。
- Acrobat Reader DC で目的のPDFを開く。
- (重要) DeepLデスクトップアプリ上で、入力欄をクリックしてフォーカスを与えておく。これをしておかないと変な動作になる。
- PDF上の、翻訳したいテキストを選択して、copypaste_gui.au3 のウインドウの「Translation」をクリック。
以下のような感じで自動翻訳できる。
これで少しは英文pdfを眺めるのが楽になった…かな…。たぶん。
ところで。このくらいの処理なら、Python + PyAutoGUI を使ってもできるのではなかろうか…?
[ ツッコむ ]
#2 [windows] AutoIt3用のSciTEの設定を少し変更
AutoIt (AutoIt3) は、Windows上で、特定のアプリにショートカットキーを送信したりして操作を自動化できるツール。
今回、Windows10 x64 21H2 上に AutoIt3 3.3.16.0 x86 をインストールして少し触ってみたのだけど、付属エディタ SciTE (SciTE4AutoIt3) の設定がちょっとアレだったのでカスタマイズしてみた。
_AutoIt Script Editor Downloads - AutoIt
上記ページから、SciTE4AutoIt3_Portable.zip をダウンロードして解凍。AutoIt3 インストールフォルダ\SciTE\ に上書きコピーした。
今回、Windows10 x64 21H2 上に AutoIt3 3.3.16.0 x86 をインストールして少し触ってみたのだけど、付属エディタ SciTE (SciTE4AutoIt3) の設定がちょっとアレだったのでカスタマイズしてみた。
_AutoIt Script Editor Downloads - AutoIt
上記ページから、SciTE4AutoIt3_Portable.zip をダウンロードして解凍。AutoIt3 インストールフォルダ\SciTE\ に上書きコピーした。
◎ 設定ファイルの内容。 :
設定ファイルは、SciTE を起動して、Options → Open User Options file、を選択すれば開ける。
内容は、以下にした。
_SciTEUser.properties
内容は、以下にした。
_SciTEUser.properties
import au3.keywords.user.abbreviations import au3.UserUdfs autocompleteword.automatic = 1 # set UTF8 code.page=65001 character.set=128 # set SJIS (Japanese) # code.page=932 # character.set=128 # code.page=0 # character.set=204 # font setting if PLAT_WIN technology=1 font.monospace=font:HackGen,size:16 font.base=$(font.monospace) font.small=$(font.monospace) font.comment=$(font.monospace) font.text=$(font.monospace) font.text.comment=$(font.monospace) font.embedded.base=$(font.monospace) font.embedded.comment=$(font.monospace) font.vbs=$(font.monospace) # .au3 style # Comment line style.au3.1=fore:#008000 # Comment block style.au3.2=fore:#008000 tabbar.visible=1 tabbar.multiline=1 statusbar.visible=1 title.full.path=1 # line number line.margin.visible=1 line.margin.width=6+ margin.width=4 # tab size tabsize=4 indent.size=4 use.tabs=0 # recent file save.recent=1 save.session=1 load.on.activate=1 #save.on.deactivate=1 are.you.sure.on.reload=1 virtual.space=1 visible.policy.strict=1 visible.policy.lines=4 # fold.symbols=3 # shortcut keys user.shortcuts=\ $(user.shortcuts)\ Ctrl+Space|IDM_COMPLETEWORD|\ Alt+Up|2620|\ Alt+Down|2621|
◎ 少し説明。 :
記述内容を少し説明。
import au3.keywords.user.abbreviations import au3.UserUdfsAutoIt3用(.au3)の設定ファイルをインポート。
autocompleteword.automatic = 1文字を打つと自動補完ウインドウが開くように指定。
# set UTF8 code.page=65001 character.set=128 # set SJIS (Japanese) # code.page=932 # character.set=128 # code.page=0 # character.set=204日本語文字列は UTF-8 として扱う。
# font setting if PLAT_WIN technology=1 font.monospace=font:HackGen,size:16 font.base=$(font.monospace) font.small=$(font.monospace) font.comment=$(font.monospace) font.text=$(font.monospace) font.text.comment=$(font.monospace) font.embedded.base=$(font.monospace) font.embedded.comment=$(font.monospace) font.vbs=$(font.monospace)フォント設定。全部モノスペースフォントにして、フォント種類は HackGen を指定した。「if PLAT_WIN」は、Windows上で動かした時に有効。「technology=1」を指定すると DirectWrite による描画になるらしい。
# .au3 style # Comment line style.au3.1=fore:#008000 # Comment block style.au3.2=fore:#008000.au3 ファイル内のコメント部分が斜体で表示されるのが嫌なので、斜体の指定を外した。
tabbar.visible=1 tabbar.multiline=1 statusbar.visible=1 title.full.path=1タブバーを表示。
# line number line.margin.visible=1 line.margin.width=6+ margin.width=4行番号を表示。
# tab size tabsize=4 indent.size=4 use.tabs=0タブ文字のサイズを4文字に。かつ、タブ文字ではなくスペースにする。
# recent file save.recent=1 save.session=1最近開いたファイルを有効化。
load.on.activate=1 #save.on.deactivate=1 are.you.sure.on.reload=1 virtual.space=1 visible.policy.strict=1 visible.policy.lines=4 # fold.symbols=3巷の解説ページからよく分からずにコピペ…。
# shortcut keys user.shortcuts=\ $(user.shortcuts)\ Ctrl+Space|IDM_COMPLETEWORD|\ Alt+Up|2620|\ Alt+Down|2621|ショートカットキーを設定。
- Ctrl+ Spaceを補完キーにした。
- Alt+Up、Alt+Down に、選択範囲の上下移動を割り当て。
◎ 余談。 :
SciTE4AutoIt3 には、KODA FormDesigner という、AutoIt3用のGUIデザインツールも同梱されていた。SciTE上で Alt+M を叩いたら起動した。
_KODA FormDesigner [Koda]
_KODA FormDesigner [Koda]
[ ツッコむ ]
#3 [windows] タイトルバーに貼り付くランチャーが欲しい
Windows10上で動作する、アプリウインドウのタイトルバーに貼り付くランチャーが欲しいなと…。そういうランチャーがあれば、例えば AutoItのスクリプト等を登録して、まるでアプリがその機能を持っているかのように見せかけて使うことができるのではないだろうかと…。
ちなみに、昔はそういうランチャーが存在していたのだけど。
_「Asroc=Launcher 2nd」ウィンドウのタイトルバーに貼り付くランチャー - 窓の杜
_Asroc=Launcher 2nd - k本的に無料ソフト・フリーソフト
どうやら今現在は公開中止になってしまったようで。公式ページが404。
一応 WebArchive から asroc2nd_116.zip を入手して、Windows10 x64 21H2上で動作確認してみたけれど、基本機能は動いているっぽいものの、Windows10のデスクトップの見た目では、ランチャー部分と最小化ボタンが重なってしまってビミョーにアレだなと…。
代替ソフトが無いものかとググってみたけど、これが全然見つからない。需要として特殊過ぎるのだろうか。
ちなみに、昔はそういうランチャーが存在していたのだけど。
_「Asroc=Launcher 2nd」ウィンドウのタイトルバーに貼り付くランチャー - 窓の杜
_Asroc=Launcher 2nd - k本的に無料ソフト・フリーソフト
どうやら今現在は公開中止になってしまったようで。公式ページが404。
一応 WebArchive から asroc2nd_116.zip を入手して、Windows10 x64 21H2上で動作確認してみたけれど、基本機能は動いているっぽいものの、Windows10のデスクトップの見た目では、ランチャー部分と最小化ボタンが重なってしまってビミョーにアレだなと…。
代替ソフトが無いものかとググってみたけど、これが全然見つからない。需要として特殊過ぎるのだろうか。
◎ 2022/04/24追記。 :
Asroc=Launcher 2nd 1.16 について。Shift + ドラッグでランチャーの位置を変更できるとヘルプに書いてあった。これで最小化ボタンと重なってしまう問題は解決できそう。
ただ、Adobe Acrobat Reader DC 64bit 2022.001.20117 のタイトルバー上では、Asroc=Launcher 2nd が一瞬表示された直後、どこかに消えてしまう。どうやら、このランチャーを表示できるアプリと、表示できないアプリがあるようだなと…。
ただ、Adobe Acrobat Reader DC 64bit 2022.001.20117 のタイトルバー上では、Asroc=Launcher 2nd が一瞬表示された直後、どこかに消えてしまう。どうやら、このランチャーを表示できるアプリと、表示できないアプリがあるようだなと…。
[ ツッコむ ]
以上、1 日分です。