PCOTではもうここまで作り込んでしまった後では流用できる処理も多いとはいえ、一から作り直しなレベルなので、流石に自分ひとりでは無理そうです・・・。
開発仲間が増えるか、自分がそうした様に(※)誰かがPCOTからヒントを得て新しい翻訳支援ツールを作成してくれるのを待つか、といったところですね。
※PCOTは元々synctam様の「Translation Aid for Eschalon(TA4E)」からヒントを得て焼き直したものです。現物がなかったので、100%独断と偏見で作ってますがw
【表示中の画像ファイルを削除】
これは、画像ビューアを作ってる最中に絶対付けようと思ってた機能だったのですが、画像ビューアが完成して嬉しさの余り気が抜けて実装を忘れてましたw
ちなみに「Eschalon Book I_001.png」「Eschalon Book I_002.png」「Eschalon Book I_003.png」という画像があった場合、「Eschalon Book I_002.png」を削除したとき、次に作成された画像が自動的に割り振られる
名前は「Eschalon Book I_004.png」になります。
これは、プロローグなどのスクショを取得している際に間違って画像を撮ってしまい、削除した場合などにファイル名の連番は歯抜けになりますが、次の画像名を歯抜けが埋まるような形で取得すると話の前後関係がおかしくなるという懸念からこういう形の実装になっています。予めご了承ねがいます。
あとOCRの精度については、Capture2Text のソース(OcrEngine.cpp や OcrEngine.h)を参考にしてはいかがでしょうか。
「GSam/Capture2Text: Linux CLI port of Capture2Text v4.5.1」 https://github.com/GSam/Capture2Text
PCOTを更新しました。
今回は悲しいお知らせです・・・。
やはり翻訳精度を上げたせいか、無制限の使用が出来なくなってしまったようです・・・。
ただ、一度ブラウザと同じ精度で翻訳されるのに慣れてしまったせいか、どうしても元に戻すのが嫌だったので、弾かれた場合に元の無制限で使用できるバージョンに切り替えるように対応しました。
その際、使用している最中に突然アホな翻訳になってしまうので、今がどっちの状態かをステータス領域にて可視化させることにしました。
「参考画像」
※インターネット接続が切れている場合などは、プロセスの切断と同じカラー構成で「Google翻訳:無効」と表示されるようになっています。
ステータスの可視化は、プロセス選択時に一度ダミーの翻訳を投げてレスポンスの状態で表示を切り替えているので、プロセス選択はあまり頻繁に行わないよう推奨します。たかが一回、されど一回ですw
というわけで、今回はガッカリな更新になってしまいました・・・。
PCOTを更新しました。
以下に更新項目を列挙します。
更新項目について説明します。
【画像のローテーション表示】
左右キーで画像の表示をローテーションさせるように修正しました。
例)画像が3枚ある場合
「→キー」画像1→画像2→画像3→画像1
「←キー」画像1←画像3←画像2←画像1
【画像翻訳をショートカットで起動】
ショートカットが有効な状態で、翻訳表示画面起動中に「ベースキー」+「I」で画像翻訳画面を起動します。
☆注意☆
ショートカットの設定ファイルの内容が変わりますので、ショートカット設定画面を表示後、一度リセットして今回の更新を適用する必要があります。
【改行無視の修正】
「改行を無視」の実装により「対象通りに改行」と被らないように実装したつもりでしたが、色々とイベントが入り乱れて変なことになってたので修正しました。
【訳文で文字選択中に別のコントロールクリックするとエラー】
翻訳表示画面のサイズを変更できるようにした際に組み込んでしまったバグです。これで直っているハズ。
【辞書登録と名詞登録時の警告を削除】
原文を小文字化にチェックがあったとき、警告で大文字小文字が合ってないけど大丈夫ですか?みたいな警告を出してたんですが、今はもう不要なので削除しました。
なんか、普通にショートカットが実装できちゃったので今回の更新にまとめます。
お久しぶりです!すみません、結局実装しちゃいましたw
ただ、簡易コマンドも悪いものではないので残してあります。
たとえば、ゲーム上で何かキーボードのボタンが押されたら勝手に会話が進んじゃうようなゲームの場合は、ショートカットでキャプチャーを行うのが不可能なんですよね。(たとえアクティブじゃなくても)
後は、最近画像翻訳という機能も実装したので、そちらも使ってみてください。
詳しい説明を以下に貼っておきます。
画像翻訳説明1
画像翻訳説明2
作者の励みになりますので、また色々と感想とか要望とかくださいね!
あと、周りの人にも沢山広めてください!お願いします!
お久しぶりです。なんと見ていなかったうちにショートカットが実装されていたとは…。ゲームによっては簡易コマンドの切り替えがうまくいかないものがあったので、やっぱりショートカットもあればな…と思っていたのでとても嬉しいです。遅くなりましたが実装ありがとうございます!
PCOTを更新しました。
今回は一か所だけ更新しました。
「翻訳表示画面」の「原文を小文字化」のチェックボックスを廃止
代わりに、「改行を無視」のチェックボックスに変更
ちなみに、この「改行を無視」は領域単位でチェック状態を保存しています。(フリー選択を除く)
何がどう変わったかを一目で分かるようにまとめた画像を以下に貼りましたので参照してください。
注:画像は英語で長い文章をつくるコツ!から拝借しました。
「原文を小文字化」を廃止した理由として、現在PCOTでは大文字小文字を自動的に判断して適宜変換するような処理を行っています。
例1)文章が全て大文字の場合は全て小文字に変換
処理前:I AM A PEN.
処理後:i am a pen.
例2)文章が強調表示などで単語単位で大文字の場合は小文字に変換(IやAなどの1文字だけ大文字の場合は除外)
処理前:I am a PEN.
処理後:I am a pen.
例3)単語単位で先頭以外の不自然な場所に大文字がある場合は単語単位で小文字に変換(OCR読取失敗対策)
処理前:TEST Test teSt tesT
処理後:test Test test test
前は上記の処理を行っていなかったため、一律「原文を小文字化」というチェックでごまかしていましたが、上記の処理をするようにしたので、もう要らないだろうということで廃止しました。
問題なさそうでよかったです。
こちらでも色々と試してますが、もし何かあった場合はお気軽にお問合せください。
素早い更新、ありがとうございます。
さっそく頂きました。
ためしたところ、問題なさそうです。
しばらく、これで試してみますね。
PCOTを更新しました。
今回の更新はちょっと微妙です・・・。もしかしたら元に戻すかもしれません。
というのも、PCOTで使っている翻訳APIと他のAPIでリクエストのパラメータが違うことに気づいたので合わせれるところを合わせた結果、ブラウザと同じ翻訳結果を得られるようになったものの・・・
もしかすると、何度も翻訳していると翻訳されなくなるかもしれません。(リクエストパラメータに違いがあるのは当然それなりの理由があると思うので・・・)
なので、使い続けててPCOTが翻訳されなくなった場合は、すぐに連絡ください。元に戻します。
PCOTが翻訳しなくなったかどうかは、原文がそのまま訳文に表示されるので見ればすぐに分かります。
>>しーたー様
こちらで調べてみたところ、今も同じような状況だそうです。
参考URL
これで、まともになったと思いますが上で書いた通りもしかすると使用し続けていると、翻訳できなくなるかもしれません。
改めてご確認お願いします。
>こちらからも質問したいのですが、C2Tは使い続けていると(おそらくGoogleから弾かれるため)
>翻訳が出来なくなるというのを見ましたが、今も同じ状況ですか?
僕が使っていた範囲では、翻訳ができなくなるという状況になったことはないです。(最近はc2t使ってませんが…)
ありがとうございます!とても有意義な検証してくれましたね!
まず先に言っておくと、恐らくPCOTは馬鹿になったのではなく、元々馬鹿だったのです!w
何故そうなっているかというと、最初に作ったときに何度か翻訳していると翻訳されなくなる問題があって、原因がGoogleに弾かれているからということでした。
PCOTはそれをなんとかするためにGoogleTranslateFreeApiというものを使って無制限に使えるようにしてますが・・・明らかに翻訳精度がしょぼいんです。
PCOTは公開以来、翻訳周りは全く触っていないので、PCOTが割と翻訳精度が高いというのは幻想な気がします。
ただ、それを確認するためにわざわざC2Tをインストールするのもなー・・・と思っていたところだったので、とても有意義な検証でした。ありがとうございます。
こちらからも質問したいのですが、C2Tは使い続けていると(おそらくGoogleから弾かれるため)翻訳が出来なくなるというのを見ましたが、今も同じ状況ですか?
翻訳精度については、色々と課題があるのでちょっと頑張ってみます。
試してみました。
えっと、動作自体は大丈夫だったんですが、Google翻訳が前よりバカになっているような…?
前、PCOTでGoogle翻訳使ったときは「ワリとちゃんと翻訳するなー」と思ったのですが、今回試したら精度がかなり下がってる印象を受けました。
で気になったので、同じ英文を「PCOT」「Caputure2Text(using Google Translate)」「webのGoogle翻訳」で翻訳してみました。
C2Tとweb翻訳は同じ訳文で意味もまぁまぁ分かる物だったんですけど、PCOTだけ明らかに訳文レベルが低い結果になりました。
API回りの仕様が分からないので、理由はよく分かりませんが、ご報告まで。
おまけ:試した訳文と翻訳結果
「Perhaps it is as the old tales say, that the Ancients could move over large distances in a blink of an eye.」
C2T:多分それは昔話が言うように、古代人は瞬く間に大きな距離を移動することができたということです。
PCOT:昔話が言うように、おそらくそれは、古代人が目の点滅で大きな距離で移動することができること、です。
上手くいかなくても報告してください!w
実装ありがとうございます。
さっそくいろいろ試してみます。
うまくいったら報告しますね!
PCOTを更新しました。
以下に更新項目を列挙します。
今回の更新項目について説明します。
【メモリ大量消費】
画像ビューア画面ロード時に画像を全部読み取るということをしていたため、保存した画像枚数が多いと天井知らずにメモリを食っている状態だったので、表示時に画像を読み込むように修正しました。
【フォルダの画面ハンドルを無視】
FindWindowでフォルダの画面ハンドルが取得された場合、メイン画面のハンドルに置き換えるように修正しました。これでフォルダにキャプチャー画面がかかることはないはずです。
【翻訳結果をクリップボードに送れる】
画面中央に「翻訳結果をコピー」というチェックボックスを新設しました。
ただ、DeepLと併用しようとするとバッティングしてしまうため、「翻訳結果をコピー」チェック時にはDeepLの自動起動は無効化されます。
また、システム設定画面に項目はありませんが「翻訳結果をコピー」のチェック状態はシステム設定ファイルで覚えています。
【画像翻訳で直前の翻訳範囲を覚えておく】
実際使っていて、直前の状態を再現したいと思うことが結構あったので、覚えておくように修正しました。
なので画像ビューア画面に「翻訳ボタン」を新設し、それが押された時、前に一度「フリー選択」で翻訳範囲を選択していた場合には、それが再現されます。
画面上で「SHIFT+ENTER」と押すと「翻訳ボタン」と同様の動きをします。
今回の修正は以上です。
以下、私信です。
>>しーたー様
ご要望の処理がとりあえず実装できました。ご確認ください。
ただ、一つ前のレスで書いた通り、DeepLと併用はできませんので、その点だけご了承願います。
>>しーたー様
PCOTの翻訳結果でいいとのことですね、ありがとうございます。
試しに対応してみたところ、1点問題が発生しました。
「DeepLと連携」にチェックが入っている場合、DeepL側で翻訳を行うためにクリップボードに原文が送られるのはご存じの通りだと思いますが、これがPCOTとバッティングしてしまいます。
現象的にはDeepL起動コマンド後、PCOTの翻訳結果をクリップボードに送ったつもりでも、実際のクリップボードの中には原文が入っている状態です。(DeepL側で新たに入れなおしているか、ロックしているか・・・)
色々試した感じでは「DeepLと連携」にチェックがなかったり、▣の場合には期待通り翻訳結果がクリップボードに入っています。
なので申し訳ありませんが、ご要望されている機能を実装する場合、DeepLのチェック状態が「チェックなし」か、「半チェック(▣)」の場合にのみ翻訳結果がクリップボードにコピーされる仕様となりますが、それでもよろしいでしょうか?
重ねて、半チェック(▣)の場合でも原文を右クリックしてDeepLを起動した場合にはクリップボードが原文で上書きされることもご留意ください。
度々申し訳ありませんが、ご確認お願いします。
PCOTの翻訳結果で大丈夫です! ありがとうございます。
禁止ワードとか本当は設定したくないんですけど、ゲーム系だとネタバレがわりと深刻なんですよね…。
>>しーたー様
こちらこそ初めまして。その節はPCOTを紹介してくださってありがとうございました。
しばらくの間誰からも書き込みがなくて、放置しようかと半ば本気で考え始めてましたw
本当にありがとうございます!
【要望について】
DeepLの翻訳結果をPCOT側から操作するのは難しいです。なので、もしクリップボードに送るとなると翻訳精度の低いPCOTの翻訳結果となってしまいますが、それでもよろしいですか・・・?
最後に、こちらこそブログでPCOTを紹介してくださって本当にありがとうございました!
紹介して頂いた当時、ブログの方でコメントしようとしたのですが、禁止ワードに引っかかって投稿できませんでした。今更ながら申し訳ありませんでした。
はじめまして。「ものろぐ」の管理人です。
わざわざ紹介してくださってありがとうございます!(返事が大変遅くなってしまってすいません…。最近、英訳が必要なゲームをあまりやってなくて、こちらにおじゃましてなかったんです…)
ひさびさに来てみたら、画像キャプチャ&読み取り機能とか追加されていて驚きました。
いろいろと応用効きそうで、活用させてもらいます。
あと、要望というか、通りすがりの戯言なのですが、「翻訳結果」をクリップボードに自動送信できると嬉しいなぁ…と。
理由は2つありまして、一つは「自動でセリフが進んでいくタイプのゲームだと、読む前に次のセリフが表示されてワケがわからなくなるので、とりあえずクリップボードに送ってクリップボードツールなどを使ってためておけると便利」というもの。
もう一つは、クリップボードに自動送信できると、「棒読みちゃん」のクリップボード監視使って、翻訳文自動読み上げができるんです。(現在はDEEPLのコピーボタン押しみて読上げ中。「棒読みちゃん」の正規表現使って「英文のみテキストは読み上げない」ことで、原文読み上げは回避してます)。
思いつくままの要望で大変恐縮ですが、御一考いただけると大変嬉しいです。
最後になりましたが、「PCOT」大変ありがたく使わせて頂いています。
こんなに便利なツールを提供してくれて、本当にありがとうございます。
では!
PCOTを更新しました。
今回は不具合修正のみです。
以下に更新項目を列挙します。
以下は今回の修正の説明です
【FindWindow関数について】
この関数を使用することにより、同タイトルの別プロセスを取得することが可能になったのですが、1プロセスの中に複数タイトルを持つ場合(ブラウザのタブなど)に正しく画面ハンドルを取得できなかったので、とれない場合はメイン画面の画面ハンドルを適用するように修正しました。
むしろ修正前より対応プロセス減ったんじゃ・・・と思われた方は申し訳ありません。この修正で直っている筈です。
【注意】
FindWindow関数は画面のプロセス名ではなくタイトル名から同じタイトル名でトップにある画面ハンドルを検索しにいく関数のようで、ここで取得される画面ハンドルはフォルダを含みます。
つまり、プロセス名と同じフォルダを開いていたりすると、そちらに接続されてしまいますので不要なフォルダは予め閉じてから操作するようにしてください。
対象プロセスが増えるとはいえ、中々に不便なのでそのうち直せそうなら直します・・・。
ちなみに「画面ハンドル」と言われてもプログラムをしない方にはなんのこっちゃって話なんですが、要は画面の識別番号の様なものです。
【名詞登録用に訳文で選択した単語が適用できない】
偶然見つけました・・・。そもそもこんな面倒な制御をしなきゃいけなくなったのはリッチテキストボックスのせい・・・という愚痴は今更なので言いませんw
最後に妄想を垂れ流します。
PCOTに関して言えば、もう作り切った感はあるのですが・・・翻訳支援ツールとしては実は全然満足していません。
以下に、本当はこうしたかったという妄想を列挙します。
これは、簡易画像ビューアを作って閃いたんですが、PCOTは全てのプロセスというわけではないんですが、フルスクリーンのスクショを取得することができます。なので、現時点のPCOTでも画像翻訳を使用すれば、一部フルスクリーンには対応できます。(実証済み)
手前味噌ですが簡易画像ビューアがとても有能で今までの流れの中に簡易画像ビューアを差し込めば普通にフルスクリーンに対応できそうな気がするんですよね。
というのも、PCOTではキャプチャー画面で編集できるのは読取倍率程度で、キャプチャー画面の起動前に、簡易画像ビューアを差し込めば、「フリー選択」ボタンを押す→スクショを撮る→簡易画像ビューアで表示→倍率などを指定してキャプチャー画面を起動→翻訳範囲選択→OCR→翻訳という流れで、固定翻訳の場合はこの一連の動作を予め設定ファイルで覚えておき「翻訳」ボタンだけで自動化すれば済む話です。
簡易画像ビューア上で、画像の二値化なども出来るようにすれば、Tesseractとあまり相性がよくなかった大津の二値化を使用せずに、ユーザー側でプレビュー見ながら画像の二値化の閾値を設定できるという強みもあります。
PCOTではもうここまで作り込んでしまった後では流用できる処理も多いとはいえ、一から作り直しなレベルなので、流石に自分ひとりでは無理そうです・・・。
開発仲間が増えるか、自分がそうした様に(※)誰かがPCOTからヒントを得て新しい翻訳支援ツールを作成してくれるのを待つか、といったところですね。
※PCOTは元々synctam様の「Translation Aid for Eschalon(TA4E)」からヒントを得て焼き直したものです。現物がなかったので、100%独断と偏見で作ってますがw
ただ・・・誰かが上に挙げた妄想を実現してくれるのを待つのは私の性分ではないので、無駄かも知れませんが開発仲間を募集したいと思います。
誰か「手伝ってもいいよ!」っていう熱い方がいたら声をかけてください。
というわけで、以下の条件で開発仲間を募集します。
一人でも集まったらPCOT2.0(仮称)を作りたいと思います。
以上の条件を受け入れてくれた上で、もし手伝ってもいいよって方がいたらお気軽にご連絡ください。
PCOTを更新しました。
今回の更新は前回の更新で書いた「もうちょっとなんとかしたかった部分」を直した更新になります。
大した更新ではありませんが、それなりに量があります。
以下に更新項目を列挙します。
さて、今回の更新について一つずつ説明します。
【画像翻訳画面をEscキーでも閉じられるように修正】
これについては書いたままです。PCゲームに慣れた人は一々「閉じる」ボタンをクリックする方が煩わしいだろうと思い、あっても邪魔にならないので実装しました。
【表示中の画像ファイルを削除】
これは、画像ビューアを作ってる最中に絶対付けようと思ってた機能だったのですが、画像ビューアが完成して嬉しさの余り気が抜けて実装を忘れてましたw
ちなみに「Eschalon Book I_001.png」「Eschalon Book I_002.png」「Eschalon Book I_003.png」という画像があった場合、「Eschalon Book I_002.png」を削除したとき、次に作成された画像が自動的に割り振られる
名前は「Eschalon Book I_004.png」になります。
これは、プロローグなどのスクショを取得している際に間違って画像を撮ってしまい、削除した場合などにファイル名の連番は歯抜けになりますが、次の画像名を歯抜けが埋まるような形で取得すると話の前後関係がおかしくなるという懸念からこういう形の実装になっています。予めご了承ねがいます。
【左ダブルクリックで画像を画面サイズに合わせる】
書いた通りです。調子に乗って画像サイズをどんどん拡大していった後に元のサイズに戻すのが大変な場合にご使用ください。
【Enterキーでキャプチャー画面起動】
これもEscキーと同じく、一々「フリー選択」ボタンをクリックするのが煩わしいと思う方もいると思うので実装しました。
【画面ハンドルの取得方法の見直し】
PCOTが対応していないプロセスに、以下の3パターンがあります。
この内の「1」については、そもそもプログラム一覧画面に表示されないのですが、問題は「2」と「3」で「2」については、フルスクリーンを無理やりアクティブ状態にしようとすると、同じプロセスでも失敗するときと失敗しないときがあって、動作が不安定です。(もともとフルスクリーンは対象外ですが)
今回の修正で「3」については、「見えている画面が必ずしもメイン画面であるとは限らない」ということに思い至り、メイン画面からWinAPIのFindWindow関数によって、メイン画面以外の画面サイズが取得できる画面ハンドルを探すことによって、対応プロセスが増えました。
実際増えたと言っても、こちらで確認しているのはRPGツクール2000位しかないので、あまり嬉しくないのですが・・・。皆様の環境で対応しているプロセスが増えていることを祈ります・・・。
ただ、この手法で完全に全てのプロセスを対象にできるかといえば、そんなことはなく・・・それについては依然として原因不明です・・・。
【翻訳表示画面のリサイズ】
どうして今までやらなかったんだと突っ込まれそうですが・・・変なところで拘ろうとした大人の事情です・・・申し訳ありません。
とりあえず、画面サイズの最小制限は表示時のサイズですが、最大サイズについては制限を外しました。これで自由自在に画面サイズを変えられるようになりました。
「参考画像」
この修正により、上の画像のように原文を拡げたり、逆に訳文を拡げたりと言った動作が可能になりました。
原文や訳文の上下のサイズを変えたい場合は上の画像の赤枠部分をドラッグしてください。
【URLジャンプ】
PCOTの原文、訳文表示にはリッチテキストボックスというものを使用していますが、今回初めて使いました。ハッキリ言って使いづらいです。使用した動機としては原文や訳文が表示サイズ内に収まらないときに自動でスクロールバーが出たら嬉しいなーと思っただけだったんですが、代償があまりにも大きかったです・・・。
というわけで、お勧めしませんw
で、本題なのですが原文にURLが入ったら勝手にハイパーリンクになったので(そうしないこともできますが)、どうせなら飛べるようにしてやろうと思い、実装しました。
最後に・・・
不具合というわけではないんですが、原文に画像をコピペすると画像が貼れちゃいますw
「参考画像」
「クリア」ボタンを押したり、次回翻訳した際に勝手に消えるので、特に制限は設けていません。こういうものだと思って頂けたらと思います。
だらだらと説明が続きましたが、更新は以上です。
PCOTを更新しました!
大分遅くなりましたが、無事更新できました。
以下に更新項目を列挙します。
もうちょっとなんとかしたい部分もありましたが、とりあえずここで一度更新しておきます。
さて、では今回の新機能の画像翻訳について改めて説明させていただきます。
【画像翻訳画面のイメージ】
簡易画像ビューアは簡易と名の付くだけあって、あまり大したことはできませんが、その分直感で使えると思います。
今回の更新内容は以上です。疲れたー。
【お知らせ】
現在PCOTに新しい機能追加を行っており、なかなか更新できずにいます・・・が、なんとか更新の目途がたちそうです!
色々と動かしてみて、ヤバイ不具合がなければ、明日(今日)中に更新したいと思います。
更新する前に先にどんな機能が増えて、何が出来るようになるかを説明させていただきます。
【新機能】
画像翻訳
【概要】
PCOTであらかじめ用意した画像ファイル(※後述)を読み込んで、フリー選択の要領で画像を範囲指定することにより画像ファイル内の文章を翻訳することができます。
【用途】
ゲームのプロローグなどの場合、バンバン文章が進んで選択して翻訳という作業が間に合わない場合などに予めスクリーンショットを撮りためて、後から順次翻訳していく形で使用していただけたらと思います。
※【画像ファイルの取得方法】
PCOT起動中にPrintScreen(Prt Sc)を押すことにより、PCOTはこれを奪って、実行ファイルと同階層に「image」フォルダ、その配下に「プロセス名」フォルダを作成し、その中に取得した画像がPNG形式で保存されます。
あんなに嫌ってた上にバッティングしまくるショートカットを使ったのは、
前にショートカットを実装して便利さに味を占めたそれがベストソリューションだと確信したからです!w【画像翻訳の方法】
予め画像が保存されている場合、翻訳表示画面に新設した「画像翻訳」ボタンを押すと、簡易画像ビューアーが起動します。簡易画像ビューアーにある「選択」ボタンを押すとキャプチャー画面が起動するので、フリー選択の要領で翻訳したい箇所を選択すると、翻訳表示画面に翻訳結果が表示される仕組みです。
【簡易画像ビューアーの操作方法】
「←」キー・・・前の画像を表示
「→」キー・・・(あれば)次の画像を表示
「マウスホイール」・・・画像の拡大/縮小
「画像上をドラッグ」・・・拡大して画像が見切れた場合に画像を動かせます
「選択」ボタン・・・キャプチャー画面が起動します
「閉じる」ボタン・・・簡易画像ビューアーを閉じます(右上の×ボタンも同様)
※簡易画像ビューアーを閉じた場合は、閉じた状態を覚えていて、次に画像翻訳ボタンを押すと前の状態が復元されます。尚、プロセスを再選択したりPCOTを終了すると復元情報は失われます。
説明は以上になります。早ければ今日の夜には更新できると思うのでご期待ください。
最後に・・・愚痴です。
今回の更新にあたって、PrintScreenを奪って画像を保存するのはそんな大した手間ではなかったんですが・・・簡易画像ビューアー・・・これがとてつもない難関でした・・・というか、迷走しまくりました。
後進のために以下に迷走の経緯を書きますw
という感じでした。
そんなにムキにならんでも・・・と思われなくもないですが、最初PCOT上で画像を選択してユーザーが使用している既存アプリの画像ビューアを開いて、それを翻訳できる形にしようと思ったのですが・・・どうしても操作の手間が増えるので、できるならPCOT内で全て完結させたいと思い、頑張りました。
というわけで、久々の私信です。
>>synctam様
見ているかどうか分かりませんが、synctam様の過去の記事「synctamの雑談日記: ゲーム画面翻訳ツール作成中・・・その1」で触れられていた「ウィンドウサイズを変更された場合は翻訳できない」とありますが、アフィン変換を使用すれば、その問題は解決できそうです。
イメージ的には変更前の画面サイズを設定ファイルなどで覚えておき、現在の画面サイズ取得時に、元の画面と現在の画面の差異(比率)を計算し、キャプチャー画面の比率をそれに倣って変更、アフィン変換によって、元の画像サイズに対して、倍率変更を行い、設定された選択範囲のオフセット座標を求めれば行けそうな気がします。
未検証なので分かりませんが、少なくてもオフセット描画を独自実装(白目)するよりは簡単な気がします。
ただ、PCOTの方は・・・流石にそんなに頻繁に画面サイズを変えたりしないだろうという前提で作っているので、今から対応させようとすると大改修が必要になるため、対応予定はありません・・・。
以上、ご参考になれば幸いです。
あと、今更ですがPCOTをTwitterで広めてくださってありがとうございます。
PCOTを更新しました。
今回の更新内容は一つだけです。
ショートカットキーでタイトル設定されていない数を入力した場合の動作ですが
例)3つタイトルが設定されている状態で、「ベースキー+4」と押した場合
修正前:何も起こらない
修正後:フリー選択が動作
という形に修正しました。
この修正は完全に自分の為の修正です。
というのも、「Eschalon: Book I」でクエストジャーナルをフリー選択する際にゲーム側では何かキーが押されたらジャーナルを閉じるという挙動らしく、前まで(ベースキー+0)の時は大丈夫だったんですが、前の修正で「ベースキー+F」にしたところ、フリー選択をしようとするとキャプチャー画面が表示される前にジャーナルが閉じてしまうという事態になってしまいました・・・。
固定翻訳の1~9のスロットを全て使い切ることはあまりなさそうだし、空スロットを遊ばせておくのも何だしなーと思って、今回の修正になりました。
当然空きスロットを全て消費した場合は、通常通り固定翻訳として動作するので問題ないと思います。
あと、前回の修正時に書き忘れましたが「Eschalon: Book I」で、ロードを行う際に「ESCでキャンセル」しようとしたところ、ESCが反応しないバグがあったのでそれを修正しました。
さて、何故今回一つしかないチョロい修正をアップしたかというと・・・
今度一つ機能追加を行おうと思っているので、次回のアップ前にまっさらな状態にしておきたかったという理由です。
多分実装できると思いますが、もし技術力が足りなかった場合は立ち消えになるかもしれませんw
PCOTを更新しました。
今回は不具合修正のみです。修正項目を以下に列挙します。
余談ですが、今PCOTを作成しようと思った切欠のゲーム「Eschalon: Book I」をPCOTの動作確認がてら遊んでいます。作成し始めた当初はDeepLを知らなかった為、こんなに快適にゲームが出来るとは思いませんでした。
DeepLなくして、PCOTの利便性はあり得ないと今なら思いますw
ただ、惜しむらしくはDeepLが高性能過ぎて、OCRの読取を失敗した箇所もそれなりに翻訳してくれちゃって辞書登録や名詞登録の利便性が霞むことですね・・・。PCOT自身の翻訳精度が上がればその辺も解決できるのですが・・・。
誰かこれを見ている方で、無料で(文字数制限があったとしても)無制限に使えてそれなりに翻訳精度の高いAPIがあるならご教示頂けましたら幸いです。尚、DeepLに匹敵する翻訳精度なら考えますが、ユーザー各々でAPIキーを取得するようなタイプは原則採用したくありません。(導入する敷居が高くなるので)
ちなみに、今はPCOT自身の翻訳には「GoogleTranslateFreeAPI」というものを使用しています。
というわけで、何か情報があればお気軽にコメントください。
PCOTを更新しました。
更新項目は以下の通りです。
翻訳ボタンのショートカットについてですが、フリー選択で翻訳箇所を指定した場合、直前に指定した箇所を覚えているため、翻訳ボタンをショートカットで起動できないと不便だと思い、追加しました。というか、不便でした・・・。
【注意事項】
今回の更新により「ベースキー」+「0」は「フリー選択」ではなく、「翻訳ボタン」に置き換わりました!
既にショートカット機能をご利用中の方は、お手数ですが「プログラム一覧画面」>「システム設定」>「ショートカット設定」から「リセット」ボタンを押して初期化した後にショートカットキーを振りなおしてください。
尚、「フリー選択」は「ベースキー」+「F」になります。
PCOTを更新しました!最新版をDLしてご利用ください。
更新項目を以下に列挙します。
【ショートカットについて】
ショートカットはシステム設定画面の「ショートカット使用」をチェックすることにより、有効化されます。
※ショートカットが有効中の場合、簡易コマンド画面は使用できません。
「ショートカット設定」ボタンを押すと、ショートカット設定画面が開きます。
「CTRL」「SHIFT」「ALT」「WIN」と「数字キー」で任意の組み合わせを設定してください。
※「リセット」ボタンを押すと初期状態にリセットされます。初期状態は「CTRL」+「0~9」の組み合わせです。
※「CTRL」「SHIFT」「ALT」「WIN」のいずれかのベースキーの入力は必須です。
最後に
結局ショートカットを実装しちゃいました・・・。こんなことなら簡易コマンド画面なんて作らずに最初からショートカットを実装するべきでしたね・・・。実装しなかった理由については、職業病だと思って忘れることにします・・・。簡易コマンド画面はあれはあれで便利なので残したままにしておきます。(すげぇ頑張ったし)
以下、私信です。
ものろぐ様
ご要望通り(?)ショートカットを実装したので、もし宜しければPCOTの紹介記事を更新して頂けるとありがたいです!
PCOTを修正しました。(小声)
タイトルを新規追加しようとすると、エラーが出まくるバグを修正しました。最新版をDLしてご利用ください。
PCOTを更新しました。(β版)
今回の更新はショートカットのお披露目・・・なんですが、実を言うとまだ完成していません。
予想に反して実装が難しかったので、まだショートカットキーの設定はできません。一応技術的な難所は越えたのでベータ版ということで公開します。
何度も念を押しますが、ご使用は自己責任でお願いします。
それでは早速、使用方法と注意点について説明します。
【概要】
注意点
使用した感想など、要望も含めて是非こちらでコメントください。作者の励みになります。
告知:ショートカットキーを実装します!
この度、ショートカットキーを実装することにしました。理由として、NOFA様やものろぐ様や他の方からショートカットキーの要望がそれなりにあったので。使用は完全に自己責任ということでお願いします。
以下に概要を記します。
【概要】
グローバルフックでキー入力を監視し、設定したキーが押された場合に、対象の翻訳を行う。
有効なショートカット:
・固定翻訳の1~9
・フリー選択
ショートカットキーの種類
「CTRL(任意) + SHIFT(任意) + ALT(任意) + WIN(任意)」 + 0~9(固定)という形になります。
「」カッコ内を仮にベースキーと呼びます。
固定値の0~9については「1~9」が固定翻訳のコンボボックスの順番(※)と紐づきます。
固定値の「0」がフリー選択に紐づきます。
(※)固定翻訳を10個以上増やした場合は10番目以降はショートカット対象外とします。
【注意】
これから組み始めるので実装にどれくらいかかるか分かりませんが、乞うご期待!
というか、こうして告知して自分を追い込まないとモチベーションが保てないのです・・・。
以下、私信です。
ものろぐ様
ブログでPCOTを紹介してくださってありがとうございました!
とても嬉しくて該当記事にコメントしようとしたのですが、謎の禁止ワードに阻まれて投稿できなかったのでこちらでお礼を言わせてもらいます!
PCOTを更新しました!最新版をDLしてご利用ください。
更新項目を以下に列挙します。
タイトル名を編集した場合は再起動後に適用されます。
※この修正により「原文の小文字化」は不要になった感はありますが、OCRが読みそこなった場合に、大文字と小文字が不自然に乱立する場合があるので、そのまま残しています。
簡易コマンド画面の上で「CTRL+マウスホイール回転」で簡易コマンド画面の不透明度を増減させることができます。
※画像にある通り、現在の不透明度が1%~100%の間で表示されます。
PCOTを更新しました。
今回はバグ修正のみです。
普通に使っていれば気づかないバグが大半だったので、細かい修正項目には触れません。
一応一つだけ、重要そうなのを以下に記します。
タイトル作成画面で既に作成済みのタイトルをリネームしようとするとタイトルを更新できないバグがありました。
今回の修正で直っている筈なので、最新バージョンに差し替えてご利用ください。
とりあえず大体安定してきたと思うので、そろそろ本格的に説明書を作ろうかどうか悩んでます・・・。
利用人口も全然把握できてないので、詳細に作っても意味ないかもとも思っていますが・・・。
画像付きでちゃんと説明書を作って欲しいよーって方がいたらコメントをお願いします。
>遅くなりました!やっと納得いく仕様に漕ぎつけたので、ご要望の通りに修正しました。
実装ありがとうございます!閉じるクセを身につけるといったものの、やはり閉じ忘れが多かったのでさらに手軽に翻訳できるようになりました。動作の方も問題ありませんでした。
PCOTを更新しました!最新版をDLしてご利用ください。
更新項目を以下に列挙します。
以下私信です。
>>NOFA様
遅くなりました!やっと納得いく仕様に漕ぎつけたので、ご要望の通りに修正しました。
一応、各種アプリのアクティブ時の振る舞いを以下に列挙します。
以上になります。
一応動作確認をしていますが、もし何かおかしな挙動をした場合はお手数ですがご報告願います。
お返事ありがとうございます。
なるほど、CallNextHookEx()関数を呼べばフックが継続する感じなんでしょうかね?(というか、基本呼べって書いてありますね)同じショートカットなら、処理の順番が変わるだけで両方そのショートカットの処理を行う感じでしょうか。でも、外部アプリの画面状態を強制的に変更するPCOTとは相性が悪い気もします・・・。
んー、でもやっぱり怖いですねw
注意喚起するにしても、皆が一様にReadmeを読んでくれるわけでもないですし・・・。
仕事柄、目的としたもの以外の外部アプリを巻き込む処理の実装には消極的(下手すると賠償問題に発展するので)なんですよね・・・。過剰反応していると思われたらすみません。
>>「Eschalon: Book I」のキャラクター作成画面ではマウスオーバーした場所の説明が説明欄に表示される仕様のため、翻訳ボタンが押せなかったからです。
一応、今の簡易コマンド画面でもかなり不格好ですが、簡易コマンド画面を対象項目に重ねて翻訳ボタンを押せば、説明欄の翻訳を行ってくれるので、一旦様子を見させてください。
あまり使ってくれてる人もいない気がしますが、これから先「ショートカットがどうしても欲しい!」という要望がたくさん挙がってきたら、慎重に対応します。
相談に乗って頂き、ありがとうございました。
・ショートカットについて
グローバルフックを使用した場合、CallNextHookEx()関数のコールを忘れなければ他のアプリに悪影響を及ぼす可能性を減らすことができると思います。ただ、利用者に対して正しい使い方と注意事項を説明する必要がありますね。
ちなみに、以前テストしていたバージョンでは、Ctrl+0 ~ 5 をそれぞれの領域の翻訳用に割り当てていました。
「synctamの雑談日記: ゲーム画面翻訳ツール作成中・・・その1」
https://synctamdiary.blogspot.com/2018/12/hdd-eschalon-book-eschalon-book-ocr-ocr.html
(各ボタンのキャプションに数字が書いてありますがこの番号がショートカットキーの番号です)
当時はまだキーは固定でしたが、変えたい時は設定ファイルを変更してテストしていました。グローバルフックを使用した理由は、「Eschalon: Book I」のキャラクター作成画面ではマウスオーバーした場所の説明が説明欄に表示される仕様のため、翻訳ボタンが押せなかったからです。
・DeepLについて
>>失礼しました、DeepLについては返信いたしました。
返信確認しました。こちらでDeepLについて今の所感を書きます。
まず更新内容の書き方が分かりにくかったですね、こちらこそすみませんでした。
DeepLのプロセス自動起動についてですが、前にPCOTとは全く関係ないアプリでレジストリからインストールディレクトリを検索する処理を書いたことがあるので、レジストリに名前が載ってさえいれば流用すればいけそうかなと思ったものの、翻訳が終わった後の後始末(プロセスを終了するか否か)をどうするかとか、あとはDeepLの設定を見る限り、無効時間を設定したり、ショートカットを拾って欲しくないプログラムを例外設定していく設計思想に倣うならば、基本常駐させるべきものという認識です。
・GCat4Xについて
長期ベースのプロジェクトということですね。
ならば即興で動くPCOTを作ったのは無駄ではなかったということですね。少し報われた気がします。
改めて、いつか公開されることを楽しみにしています。
あと別件になりますが、PCOTの要望にもGCat4Xの構想にもあったショートカットについてsynctam様の意見を伺いたいです。
私は簡易コマンド画面によってショートカットの実装を避けましたが、理由は前に書いた通りWindowsを含む、他アプリとのバッティングが怖かったからです。
極端な例を挙げると「CTRL+S」とキーコンフィグに設定してしまったら、他アプリで保存ができないみたいな弊害が起きたら困ると思ったからです。
なので決め打ちなら・・・とも思ったのですが、フリー選択はともかく、PCOTの機能の売りはsynctam様もご存じの通り固定翻訳です。別にフリー選択だけでいいならプロセスに接続するメリットはあまりありません。(最小化されていても勝手にアクティブになってくれる位のメリットはありますが・・・)
どうせショートカットを入れるなら固定翻訳もショートカットで機能してくれないと片手落ちに見えるのです。
その場合、固定翻訳はタイトル(領域)ごとに動的に変わってきます。そうすると、ショートカットの数も必然的に増減しますよね?(ベースキー*設定領域数)という感じで。
その辺をユーザーに設定させて後はバッティングしようがどうなろうが知らんと言ってしまうとあまりに無責任なので、PCOTは簡易コマンド画面の実装に落ち着いたわけですが、何か腹案はありますか?
もし良さそうな案があれば簡易コマンド画面を残すかどうかはともかく、今からでもショートカットの実装を検討します。
長くなってしまいましたが、ご確認ください。
失礼しました、DeepLについては返信いたしました。
GCat4Xは、まだ仕様を確認している段階で動くものは何もありません。時間のある時に実現性の確認をしている状態で、まだ実現の目処は立っていません。ちょうどそんな時に、ぬるっぽさんから連絡があったので、情報を公開したという訳です。また、Github は、仕様をまとめるのに便利だったので使っておりました。という事で、現状では公開できるようなソースはありません。
すいません、勘違いしていました。
DeepLを全く起動せず、テストしていました。DeepLは起動しておかないといけないんですね。それであれば、問題解決です。
大変失礼しました。
・余白について
ありがとうございます。
実を言うと画像の二値化を行った際に一度OpenCvSharpというのを使ってました。Bitmapで大津の二値化手法を試そうとしてネットで情報を得ようとしても、有料の記事だったり、数式や概念の様なもので難しすぎて挫折しました。
OpenCvSharpはBitmapとMat形式の相互変換で多少躓きはしたものの、処理自体は確かに簡単でしたね。
また時間のある時に手を出してみようと思います。
・「Issues · synctam/GCat4X」について
今もこのプロジェクトは継続中なのでしょうか?
私がこのツールを公開したからこそ、synctam様と直接交流できて喜ばしい反面「素直に待っておけば良かった!」という気持ちもあり、複雑な気分ですw
もしとん挫したのでなければ、日の目を見ることを楽しみにしています。
参考資料が必要であれば、連絡さえ頂ければPCOTのソースをソリューションごと渡してもいいです。
もちろん、その際の著作権は放棄します。
あ、でもアイコンだけはネットのフリー素材なので、流用しない方がいいと思います。
・Capture2Textについて
ソース公開されてたんですね、知りませんでした・・・。
OCRは仕事で有料のものを一度触ったきりで、完全に門外漢でした。今更ながら無知を晒して恥ずかしい限りです。
最後に、前のレスにも書きましたがDeepLが起動しない挙動について、返答頂いてもいいですか?
ブラックリスト上手く行きましたか、良かったですね。
・余白について
確かに難し問題ですね、仰るとおり一番外側の色で拡張するのが良いかもです。
ちなみに、画像処理は OpenCV が処理速度も早く楽に画像処理ができて便利です。時間のある時に試してみるのも良いと思います。
・無視した方がいい文字について
今のところ、思い当たる文字はありません。
以前検討していた情報がここ↓にあります。
「Issues · synctam/GCat4X」
https://github.com/synctam/GCat4X/issues?q=
あまり参考になる部分はないと思いますが、リンクを張っておきます。
あとOCRの精度については、Capture2Text のソース(OcrEngine.cpp や OcrEngine.h)を参考にしてはいかがでしょうか。
「GSam/Capture2Text: Linux CLI port of Capture2Text v4.5.1」
https://github.com/GSam/Capture2Text