mieki256's diary



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 を使って、作業を自動化してみた。処理内容は以下。
  1. PDFビューアをアクティブにして、選択範囲を Ctrl + C でコピー。
  2. クリップボード内のテキストに対して、改行をスペースに置換。
  3. DeepLデスクトップアプリをアクティブにして、自動で貼り付けをする。(Ctrl+A、Delete、Ctrl+V を送る。)

利用するには AutoIt3 のインストールが必要。

_Home - AutoIt
_AutoIt Downloads - AutoIt

スクリプトソース。 :

以下のような感じになった。

_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 のクラス名を調べて反映させれば動くかもしれず。

使い方。 :

  1. copypaste_gui.au3 を実行。
  2. ボタンが2つ並んだウインドウが表示されるので、適当な位置に置く。
  3. Adobe Acrobat Reader DC と、DeepLデスクトップアプリを起動しておく。
  4. Acrobat Reader DC で目的のPDFを開く。
  5. (重要) DeepLデスクトップアプリ上で、入力欄をクリックしてフォーカスを与えておく。これをしておかないと変な動作になる。
  6. 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\ に上書きコピーした。

設定ファイルの内容。 :

設定ファイルは、SciTE を起動して、Options → Open User Options file、を選択すれば開ける。

内容は、以下にした。

_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.UserUdfs
AutoIt3用(.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]

#3 [windows] タイトルバーに貼り付くランチャーが欲しい

Windows10上で動作する、アプリウインドウのタイトルバーに貼り付くランチャーが欲しいなと…。そういうランチャーがあれば、例えば AutoItのスクリプト等を登録して、まるでアプリがその機能を持っているかのように見せかけて使うことができるのではないだろうかと…。

ちなみに、昔はそういうランチャーが存在していたのだけど。

_「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 が一瞬表示された直後、どこかに消えてしまう。どうやら、このランチャーを表示できるアプリと、表示できないアプリがあるようだなと…。

以上、1 日分です。

過去ログ表示

Prev - 2022/04 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project