ご返信、ありがとうございます。ご検討いただけてうれしいです。 >白色部分はアンチエイリアスの影響で単色ではないように思います はい、なのでPCOTの「画像加工&OCR読み取り設定」を使ってアンチエイリアス部を変換します。 ①橙色(画面から取得)を範囲100で橙色に変更 ②白(画面から取得)を範囲100で橙色に変更 これにより文字をすべて橙色に変換した結果がこんな感じです。
この画像(ハードコピーしたpng)に対してサンプルソースで ③橙色以外を黒に変換 という処理を重ねた結果が以下画像になります。
この画像をPCOTで翻訳すると以下のようになりました。 こんな感じで実用性はありそうに感じています。
前に書いたソースは文字部分が白になっているので、部分修正と補足説明を追加したものを次にアップしますが、処理の概要としてはいかになります。 (1)オリジナル画像(orgBmp)の文字部分(橙色)を透明にしたものをwkBmpに格納する。 (2)wkBmpの画像全体について、彩度を0にして真っ黒にする。真っ黒にしたとしても、文字部分は透明のまま。 (3)オリジナル画像(orgBmp:変換前のもの)にwkBmpを重ねると、文字部分のみが透明なので、文字部分は橙色として見えるがその他の部分はwkBmpの黒が上書きされている。 というイメージです。
今回作っているのは文字部分が橙色のため「橙色以外を彩度0(真っ黒)に変換する」でよいのですが、文字色が黒だとこれではだめです。その対策のため、ソースに「文字色が黒なら背景は赤色にする」というサンプルを入れております。文字色が黒なら、という判定はif(false)になっているので、ここは修正ください。
処理のご提案ありがとうございます。
画像を拝見しました。 なるほど、これはネイティブの人でも読み辛そうですね・・・。
いくつか質問させてください。
こちらで前に試した時は前に書いた通り、巻き込む色を増やすと激重になりました。 そして、添付された画像を見る限り、白色部分はアンチエイリアスの影響で単色ではないように思います。 貼って頂いたソースでは、マスクしている色、即ち「targetColor」は白の単色(255,255,255)ですが、これはちゃんと動作するのでしょうか? 巻き込む色を全てマスクする場合、重くなるのではないかと懸念しています。
ご提示頂いたソースでは彩度を0(黒)にしていますが、これは色置換の逆ではなく処理としては「指定した色以外を全て黒色に置換する」となっています。 仮に黒色(またはそれに近しい色)をマスクした時、彩度を0にする方法だと処理後の画像は真っ黒になりそうな気がします。 これについて何か解決方法はありますか?
最後に、PCOTはC#で組んでいるのでご提示頂いたソースはそのまま流用可能です。 ありがとうございます。 書き込みに関しては全く不快だとは思いません。解決方法までご提示頂けて感謝の気持ちで一杯です。 PCOTは当初自分で使う目的で突貫工事で作ったツールで、大半は一人であれこれ悩んで実装してきたので、こうしてコードベースで一緒に考えてくれる人がいるのは大変心強いです。
private void button1_Click(object sender, EventArgs e) { // 画像のロード Bitmap bmp = new Bitmap("path_to_your_image.bmp"); // 指定する色を透明に設定 Color targetColor = Color.White; // 例: 白色を透明にする bmp.MakeTransparent(targetColor); // マスク画像を作成(PixelFormat.Format32bppArgbを使用) Bitmap maskBmp = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(maskBmp)) { // 元の画像を描画する g.DrawImage(bmp, 0, 0); // 彩度を0にするColorMatrixを作成 ColorMatrix colorMatrix = new ColorMatrix( new float[][] { new float[] {0, 0, 0, 0, 0}, new float[] {0, 0, 0, 0, 0}, new float[] {0, 0, 0, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {0, 0, 0, 0, 1} }); // 画像属性を作成 ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(colorMatrix); // マスク画像に透明部分以外を黒に設定 g.DrawImage(maskBmp, new Rectangle(0, 0, maskBmp.Width, maskBmp.Height), 0, 0, askBmp.Width, maskBmp.Height, GraphicsUnit.Pixel, attributes); } // 結果画像を作成(元画像にマスク画像を重ねる) Bitmap resultBmp = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(resultBmp)) { // 元の画像を描画 g.DrawImage(bmp, 0, 0); // マスク画像を重ねる g.DrawImage(maskBmp, 0, 0); } // PictureBoxに結果画像を表示 pictureBox1.Image = resultBmp; }
ご返信ありがとうございます。画像のアップ方法を間違ってました。 このように背景に文字がまぎれるので、OCRが失敗しやすいです。
なるほど、すでに検討されてたのですね。処理が激重になるとのことでなるほど、理解できます。なんとかできないものかなぁと思い、chatGPTで調査してみたところ、以下のような方法がどうかなと思いました。
文字部分の色(範囲指定無し)を透明色に変換したあと、画像の明度、彩度を0に変換します。その画像をマスクとして、元画像の上にマスク画像を重ねることで、背景のみ黒に変換できそうかなと。 cahtGPTでソース(C#)を作成して動かしたところ、希望通りに動きました。ソースは部分抜粋ですが、次にあげます。
PCOTの開発言語が何か不明ですが、同じようなことができれば処理時間も短くて実現できないかなと思った次第です。 あくまでアイデアとしてご検討いただければ、との思いでおります。 もしこの書き込みに不快な思いをされたようでしたら削除してください。 よろしくお願いします。
PCOTをご使用いただき、ありがとうございます。 ご要望についてですが、画像が添付されていないので具体的にどうしたいのかはちょっと分かりませんが、色置換の逆は実は前にやろうとしたことがあるんです。 安直に「逆色置換」と呼んでましたが、結果から言うと無理でした。
理由として、0(完全一致)を設定した場合は問題なく上手く行くんです。
下記の引用の通り
-10に設定した場合は、色の近似範囲10から外れるものが変換対象になる
これを実装した途端、凄まじく処理が重くなってしまい、実用的な速度での置換が不可能でした。組み方が不味いのかもしれませんが、少なくともアルゴリズム的に今やっている色置換の判定を反転させるだけでは、上手くいきません。
恐らく処理が重くなる理由は置換する色が多すぎるせいだと思われるので、高精度に256色程度まで減色した画像であれば、上手く行く可能性があります。
高精度に色を減色するサンプルは前に見つけたのですが、かなり複雑な画像処理を行う必要があるので直ぐに対応するのは不可能です。
ただ、仰る要望は前々からやりたいとは思っているので今後もトライはして行こうと思います。
以上、ご理解いただけますと幸いです。
補足、「-1が不一致のもの」としましたが、-1~-100で範囲指定でもいいかもと思いました。-10に設定した場合は、色の近似範囲10から外れるものが変換対象になる、というのをイメージしています。ご検討のほど、よろしくお願いします。
お世話になります。 画像加工&OCR読み取り設定について要望です。 現状「指定した色」を置換することができるのですが、「指定した色以外」を置換することができるといいなと思いました。使用中のゲームでは添付のように背景に文字がまぎれるため、OCRがうまくできません。夜になり、背景が真っ暗だとOCRができます。なので、指定した色以外を変換できるオプションがあるとOCRができそうに思います。 添付画像では ①橙色を範囲100で橙色に変更 ②白を範囲100で橙色に変更 ③橙色以外をすべて黒に変更 という風に処理を重ねるといけそうに想像してます。
0が完全一致なので、-1が不一致のもの、というような感じだとUI変更も少なくて済みそうに思いますが。 ご検討のほど、よろしくお願いします。
ご愁傷様です・・・
断定はできませんが、dataフォルダとocrsetフォルダの二つを削除して頂くことで復帰できる可能性はあります。特にdataフォルダの中には色んな設定ファイルがあるので、壊れた設定ファイルを特定するのは困難です。 dataフォルダ内の[プロセス名].cfgファイルとocrsetフォルダ内の[プロセス名].ocrファイルは連動しているので、dataフォルダを削除する場合は、必ずocrsetフォルダも併せて削除してください。 履歴登録を行っている場合はhistoryフォルダも削除してください。
最悪それでもダメな場合は新しくDLして頂く他ありません。 無事復帰できることをお祈りしています。
当方も同じ現象に遭遇し、ここにたどり着いた
・標記エラーが発生する場合、破損しているのは設定フォルダの内容であり、それ以外のファイルが破損している可能性は低い ・設定情報をリセットしても構わない場合は、設定フォルダの削除で復帰できる って事ですかね?
再インストールするとWindowsのセキュリティ解除の方が面倒で・・・
はじめまして。PCOTをご使用いただき、ありがとうございます。
お問い合わせの件に関してですが、ご推察のとおり英日以外は言語の混在に対応していません。
まず、先に言語を指定する特性上、どの言語をどう組み合わせるかという問題があります。それと、言語を複数指定した場合は、言語を単発で指定した場合に比べて明らかに読取精度が落ちます。 例えば韓国語のみの文章を読もうとしたときに、日本語+韓国語で指定すると、韓国語の中の日本語っぽい表記を無理やり拾って、原文の中に意味不明な日本語が混じる事態になります(これは既に実装済みの英日でも同様の事が起きます)
一番良い解決方法は有料になってしまいますが、Google Cloud Vision APIを導入して、Google OCRを利用することです。 こちらは、特に言語を指定する必要がないのと、多種多様な言語の混在にも対応していますし、読取精度も既存のOCRとは一線を画す性能を持っています。
以上、あまり答えらしい答えになっていませんが、参考にしていただければ幸いです。
はじめまして。オンラインゲームで韓国語の翻訳にいいのないか探して見つけました。 質問なのですが、韓国プレイヤーとの会話を翻訳したいときに日本語や英単語が文章に混じる場合、文字列が韓国語か数字に変換され翻訳されるのですが解決方法はあったりしますでしょうか? 英語翻訳の英語と日本語の場合は対応しているとの更新情報は見かけましたが、他言語はまだ未対応なのでしょうか?
今回は不具合修正&マイナーチェンジです。
更新項目を以下に列挙します。
今回は多数のファイルを更新しています。 更新する場合は、PCOT同梱の「PCOTの更新方法.txt」にある「■確実な方法」で更新を実施してください。
今回の更新でPCOTの訳文欄に直接みんなの自動翻訳の翻訳結果を表示できるようになりました! みんなの自動翻訳は国立研究開発法人情報通信研究機構が研究開発している自動翻訳サービスです。利用するにはアカウント登録が必要となります。
利用登録はこちらから→みんなの自動翻訳@TexTra®
例によってみんなの自動翻訳の導入方法、及び利用方法の資料を作成しました。
みんなの自動翻訳の資料(1/4)
みんなの自動翻訳の資料(2/4)
みんなの自動翻訳の資料(3/4)
みんなの自動翻訳の資料(4/4)
この機能の作成にあたり、沢山の方にお世話になりました! この場を借りてお礼申し上げます!
改めてコメント頂きありがとうございます。
個別の事柄について返信する前に、先に現在の状況をお話させて頂きますと、PCOTは現在GitHubでプライベートリポジトリとして運用しています。
上記を前提として、ご提案について返信させて頂きます。 ご提案の骨子として、公益性を重視されているようですね。
まず、今のPCOTには秘匿したいソースが含まれています。 技術面の話ではなく、私が個人的に使いたい機能でそれをあまり公にしたくない事情があります。これについての言及は避けさせてください。
上記の理由と、あとソースを渡す人は私自身が選びたいのです。 具体的にはPCOTの長所と短所を理解した上で更に利便性を向上させたい方や、ITの分野でスキル向上を図る目的でPCOTを解析してみたいという方などが該当します。 上記に該当する方には個別で対応しています。
セキュリティホールの確認など、確かに公益性を重視するのであれば有意義なご提案ではあるのですが、私のモチベーションが続く限りは私一人で開発を続けていくつもりです。もちろんPCOTを利用する方は完全に自己責任となるので、セキュリティホールを懸念される方がPCOTを利用しないのも、それもまた自由です。
収益化については現在も全く考えていません。 今現在、NICTのみんなの自動翻訳を利用した機能を実装中ですが、みんなの自動翻訳は商用利用を禁止しています。 みんなの自動翻訳の機能を組み込んだ時点で、PCOTは永劫フリーソフトという位置づけになります。
最後に乱暴な言い方になりますが、仕事であれば別ですが、開発に関して知らない人とは誰とも関わりたくないので、もしPCOTのソースを公開する場合は、私自身がPCOTの開発から身を引く時(まさに丸投げですね)だと思っています。
長くなりましたが、ご理解いただけますと幸いです。
(アカウント登録したためアイコンが変わっています)古いスレッドにレス失礼しました。 PCOTをオープンソースにして欲しい理由は、(これはオープンソース全般に言えることですが)単純にその方が多くの人が開発に参加でき、ぬるっぽさん自身も含め全員の利益になると思ったからです。それと現在Windowsに「安全性が確認されてないソフト」判定されてしまいますが、ソースコードが公開されていればセキュリティホールが無いかなど誰もが確認できるようになるからです。 過去のインタビュー記事で収益化などは全く考えてないと書かれてましたが、もし今は気が変わって将来的に収益化したいなどの理由でオープンソースにしてないという事ならもちろん構いません。あるいはMusicBeeのように完全無料ソフトでもオープンソースでないソフトはありますし。
過去ログを読む姿勢にはとても感銘を受けるのですが、レスの話題が古すぎます。 当時と現在ではかなり状況が変わっているので、Lamronさんの一つ前の投稿にもレスしましたが、過去の事情をそのまま現在に持ち出されても困惑してしまいます。
「アカデミックな雰囲気が意識高くて苦手」と言うのが正直よくわからないのですが、GitHubには「フォーク」という機能があり、誰もが(元の作者が誰かが明記された状態で)「コピー」を作り更新を続けていけるようになっているので、 いつか「PCOTの後継作を俺(私)が作る!」という方が現れたら という時が来たらいつでも「丸投げ」できるようになっています。
「アカデミックな雰囲気が意識高くて苦手」と言うのが正直よくわからないのですが、GitHubには「フォーク」という機能があり、誰もが(元の作者が誰かが明記された状態で)「コピー」を作り更新を続けていけるようになっているので、
いつか「PCOTの後継作を俺(私)が作る!」という方が現れたら
という時が来たらいつでも「丸投げ」できるようになっています。
「雰囲気」と書いている通り、完全に個人の感想です。他人に同意を求めていません。
先に返信したコメントとこのコメントのどちらにも返信は不要なので、新規のコメントでソースコードを公開していない理由を追求する前に、どうしてソースコードを公開して欲しいのか、Lamronさん自身がPCOTのソースコードを利用して何をしたいのかを記述して頂きたいです。
かなり古いスレッドにコメントがついていてビックリしました。 結論を先に書くと、ソースコードは現在公開していません。
現在開発は一段落とのことですが、GitHubなどなら他の人による改善も期待できると思うのですが。
当時は落ち着いたといいつつ、未だ開発は続いています。 元スレッドの時期は他にやりたいことがあって、PCOTを早く手放してしまいたい気持ちが強かったのです。 3年前位に名乗り出ていただければまた違った結果になっていたかもしれません。
最初の投稿のリンクが404なのですが、現在はこちらで代理更新されてるという事でしょうか? https://github.com/ricoisme/PCOT ただTwitterを見ると現在もぬるっぽさんは更新を続けてるようですがGitHubにアップする予定は無いと言う事でしょうか……? 「アカデミックな雰囲気が意識高くて苦手」と言うのが正直よくわからないのですが、GitHubには「フォーク」という機能があり、誰もが(元の作者が誰かが明記された状態で)「コピー」を作り更新を続けていけるようになっているので、
こちらリンク先に何も表示されないのですが、ソースコードは削除されてしまわれたのでしょうか? それとGitHubなどメジャーどころで公開する予定は無いのでしょうか? 現在開発は一段落とのことですが、GitHubなどなら他の人による改善も期待できると思うのですが。
今回はムービーを快適に翻訳するための機能として「範囲選択時に対象プロセスのスレッドを停止」の派生オプション、「次回アクティブになるまでスレッドを停止」という機能を追加しました。
便利は便利ですが、曰くのある機能なので必ず下記の資料を読んでください。
新機能資料(1/3)
新機能資料(2/3)
新機能資料(3/3)
今回は色々手直しして取っ散らかってきたので、キリよく更新しましたが、次回の更新は、NICTで新たに公開された「MINHON_WebAPIHelper」を組み込む予定です!
乞うご期待!!
PCOTをご利用いただきありがとうございます。
お問い合わせの件についてですが、Windows10 OCRを利用する為には対象の言語パックをインストールして頂く必要があります。
導入方法は以下の記事が参考になると思います。
「Yamachannel Blog-YouTube」 https://yamachannel-blog.com/game-translation/#rtoc-10
注意点として、利用の可否判定はTesseract OCRに依存しています。 英語以外の言語(例えば中国語)でWindows OCRを利用したい場合でも、Tesseract OCRの言語データのダウンロードは必須です。
また、動作対象のOS(Windows10, Windows11)だとしても、OSのエディションが「単一言語エディション」だと、残念ながら利用できません。
利用条件を満たした上で利用できない場合は不具合の可能性があるので、その時は再度お問い合わせください。
使用ocrエンジンで、tesseract OCRしかなく、windows OCRが選択できません。windows11を使っているのですが何か解決方法はありますでしょうか?
範囲選択時に対象プロセスのスレッドを停止 をすることでしっかりと翻訳することができました。ありがとうございます
PCOTをご使用いただき、ありがとうございます。 お問い合わせの件についてですが、本来それはマインクラフト独自の仕様だと思われるので、こちらで対応できる範囲が限られることを先にご承知おきください。
以上を踏まえた上で、PCOTにはマウスオーバー時にしか表示されないポップアップを翻訳する為の機能として、以下の二つの設定があります。
メイン画面>上部メニューの「設定」>システム設定
・範囲選択時に対象プロセスのスレッドを停止 ・範囲選択時にスクリーンショット取得
問い合わせの内容を見る限り、一瞬だけマインクラフトの画面に切り替わるということなので、どちらの方法でも上手く行く可能性があると思いますが、毎度マインクラフトの画面をアクティブにする必要があると思うので、スレッドを停止させる方をお勧めします。
ただ、スレッドを停止させる方法はプログラムを強制的にフリーズさせるため、かなり不健全です。この設定のせいで何かしらおかしな挙動になったとしても責任は負えません。自己責任でお願いします。
逆にスクリーンショットを取得する方は、対象プロセスに対して何も干渉しないので安全ですが、先に書いた通り、デスクトップから毎度マインクラフトの画面をアクティブにする必要があります。
一応どちらも試してみて貰いたいです。 また、可能であれば試してみた結果をご報告頂けると助かります。
PCOT ver1.7.1でjava版マインクラフト 1.20.4でMODの英語を翻訳しようとフリー選択すると一瞬だけマインクラフトの画面に切り替わるのですがすぐにデスクトップ画面が映し出されるため翻訳できません。文章では表現に限界があるため動画などを送れればわかりやすいと思うのですが。
更新項目を以下に列挙します。 ・隠し機能(今度こそ)完全復活! ・画像加工&OCR読取設定で加工工程を見易いように表を引き伸ばすようにレイアウトのアンカーを修正
今回の更新は画像加工を修正する前の安定バージョンです。 次回の更新では画像加工に減色とガンマ補正の加工を追加する予定です。 また、減色追加に伴い、今あるグレースケールの4値化及び8値化を廃止します。 ※グレースケール前後に4色、あるいは8色に減色すれば同じことができるため。
ご不便をおかけして申し訳ありません。 もしご存じでしたら、中国からもダウンロードできる無料のアップローダーを教えて頂きたいです。
中国大陸からOneDriveにログインできないため、ダウンロードや使用ができないのは残念ですね😭😭
更新項目を以下に列挙します。 ・辞書リストと履歴リストでフィルター中に編集されても検出されない不具合を修正 ・Tesseractで空白のみのオブジェクトを削除するように修正 ・隠し機能で文節ごとに改行されてしまうのを元の改行情報に復元するように修正 ・隠し機能で利用しているWebDriverのリセットを追加(詳しくは説明書.txtの一番下を参照) ・中国語(繁体字)の正式対応
在志工的幫助下,日本領先的遊戲翻譯工具「PCOT」終於正式增加了對中文(繁體)顯示的支援!
希望 PCOT 對您有用!
※本文使用 PCOT 從日文翻譯成中文(繁體)。
無事、問題も解決しとても快適に使えるようになりました。的確なご説明をありがとうございました。
こちらこそはじめまして。PCOTをご利用いただきありがとうございます。 お問合せの件についてですが、フリー選択後、読取失敗してもキャプチャー画面が閉じないとのことですね。
キャプチャー画面を閉じる方法は3つあります。 1.タスクバーのPCOTのアイコンを右クリックし「ウィンドウを閉じる」を選択 2.キャプチャー画面がアクティブな状態で「Alt+F4」を押す 3.キャプチャー画面がアクティブな状態で「ESC」を押す(簡単でお勧めです)
また、読取失敗しているのにずっとキャプチャー画面が表示されるのは困るという場合は、以下の設定をご検討ください。
メイン画面上部メニュー>設定>システム設定
【システム設定】 「OCR読取失敗時の挙動:(デフォルト:100)秒後に閉じる」のオプションを 任意の秒に設定して、すぐに閉じるようにしてください。 ただし、0秒に設定してしまうと、ノータイムで閉じるので読取失敗したかどうか判別できません。1~2秒程度がお勧めです。
以上、ご参考になれば幸いです。
はじめまして。THE ROOM4というゲームの翻訳に使わせてただいています。とても便利で使い勝手もよく重宝しているのですが一つ操作がわからないので教えてください。 普通の文字は問題なく読みとれるのですが、日記のような画面で筆記体で大きさも異なるような表記が読みとれずをフリー範囲指定で何度か読み込ませてみましたが読み取れず、(実際に読みにくい文字なので)あきらめたのですが読み取りエラーで範囲指定のモードからゲームに戻れずそのたびにPCOTを強制終了することで対応しているのですが読み取りエラー後にフリー選択を解除するにはどうすればよいのでしょうか?
そうでしたか・・・残念です。 PCOTそのものの不具合でない以上、こちらからはどうしようもないです。 お役に立てず、申し訳ありません。
やってみましたがまた落ちてしまいました
更新項目を以下に列挙します。 ・Common.dllを廃止して共通部品を本体に統合 ・システム設定に言語選択オプションを追加 ・PCOTの画面UIを中国語(繁体字)に対応(80%位完了) ・隠し機能を利用できるように修正 ・スタート画面のタイトル列を右クリックでプロセスを無視メニューを表示するように修正
今回は多言語対応の関係上、最終的に148ファイルという過去最多のファイルを更新しています。 更新する場合は同梱の「PCOTの更新方法.txt」に記載されている「確実な方法」の通りに更新してください。
他のプログラム(Steamやブラウザ等)で正常に動作する場合は、Robloxが不正ツール防止の為に意図的に落としている可能性があります。
あまり推奨できませんが、システム設定で「範囲選択時に対象プロセスのスレッドを停止」にチェックすると、もしかしたら落ちるのを防止できるかもしれません。
Robloxで使うとなぜかRobloxが落ちてしまいます
恐らくですが、DPIスケールが半端な数になっているとレイアウトが見切れて表示されてしまうようです。 100%, 125%, 150%では正しく表示されると報告を受けています。
システム設定を開くと切れていて下の確定リセットキャンセルが表示されていません
更新項目を以下に列挙します。 ・設定ファイルの同期処理の不具合を修正 ・画像ビューアの不自然な挙動を修正 ・辞書リストで全ての辞書が非表示になっている時の編集を検知できない不具合を修正
ご返信、ありがとうございます。ご検討いただけてうれしいです。
>白色部分はアンチエイリアスの影響で単色ではないように思います
はい、なのでPCOTの「画像加工&OCR読み取り設定」を使ってアンチエイリアス部を変換します。
①橙色(画面から取得)を範囲100で橙色に変更
②白(画面から取得)を範囲100で橙色に変更
これにより文字をすべて橙色に変換した結果がこんな感じです。
この画像(ハードコピーしたpng)に対してサンプルソースで
③橙色以外を黒に変換
という処理を重ねた結果が以下画像になります。
この画像をPCOTで翻訳すると以下のようになりました。
こんな感じで実用性はありそうに感じています。
前に書いたソースは文字部分が白になっているので、部分修正と補足説明を追加したものを次にアップしますが、処理の概要としてはいかになります。
(1)オリジナル画像(orgBmp)の文字部分(橙色)を透明にしたものをwkBmpに格納する。
(2)wkBmpの画像全体について、彩度を0にして真っ黒にする。真っ黒にしたとしても、文字部分は透明のまま。
(3)オリジナル画像(orgBmp:変換前のもの)にwkBmpを重ねると、文字部分のみが透明なので、文字部分は橙色として見えるがその他の部分はwkBmpの黒が上書きされている。
というイメージです。
今回作っているのは文字部分が橙色のため「橙色以外を彩度0(真っ黒)に変換する」でよいのですが、文字色が黒だとこれではだめです。その対策のため、ソースに「文字色が黒なら背景は赤色にする」というサンプルを入れております。文字色が黒なら、という判定はif(false)になっているので、ここは修正ください。
処理のご提案ありがとうございます。
画像を拝見しました。
なるほど、これはネイティブの人でも読み辛そうですね・・・。
いくつか質問させてください。
こちらで前に試した時は前に書いた通り、巻き込む色を増やすと激重になりました。
そして、添付された画像を見る限り、白色部分はアンチエイリアスの影響で単色ではないように思います。
貼って頂いたソースでは、マスクしている色、即ち「targetColor」は白の単色(255,255,255)ですが、これはちゃんと動作するのでしょうか?
巻き込む色を全てマスクする場合、重くなるのではないかと懸念しています。
ご提示頂いたソースでは彩度を0(黒)にしていますが、これは色置換の逆ではなく処理としては「指定した色以外を全て黒色に置換する」となっています。
仮に黒色(またはそれに近しい色)をマスクした時、彩度を0にする方法だと処理後の画像は真っ黒になりそうな気がします。
これについて何か解決方法はありますか?
最後に、PCOTはC#で組んでいるのでご提示頂いたソースはそのまま流用可能です。
ありがとうございます。
書き込みに関しては全く不快だとは思いません。解決方法までご提示頂けて感謝の気持ちで一杯です。
PCOTは当初自分で使う目的で突貫工事で作ったツールで、大半は一人であれこれ悩んで実装してきたので、こうしてコードベースで一緒に考えてくれる人がいるのは大変心強いです。
private void button1_Click(object sender, EventArgs e)
{
// 画像のロード
Bitmap bmp = new Bitmap("path_to_your_image.bmp");
// 指定する色を透明に設定
Color targetColor = Color.White; // 例: 白色を透明にする
bmp.MakeTransparent(targetColor);
// マスク画像を作成(PixelFormat.Format32bppArgbを使用)
Bitmap maskBmp = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(maskBmp))
{
// 元の画像を描画する
g.DrawImage(bmp, 0, 0);
// 彩度を0にするColorMatrixを作成
ColorMatrix colorMatrix = new ColorMatrix(
new float[][]
{
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
// 画像属性を作成
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(colorMatrix);
// マスク画像に透明部分以外を黒に設定
g.DrawImage(maskBmp, new Rectangle(0, 0, maskBmp.Width, maskBmp.Height), 0, 0, askBmp.Width, maskBmp.Height, GraphicsUnit.Pixel, attributes);
}
// 結果画像を作成(元画像にマスク画像を重ねる)
Bitmap resultBmp = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(resultBmp))
{
// 元の画像を描画
g.DrawImage(bmp, 0, 0);
// マスク画像を重ねる
g.DrawImage(maskBmp, 0, 0);
}
// PictureBoxに結果画像を表示
pictureBox1.Image = resultBmp;
}
ご返信ありがとうございます。画像のアップ方法を間違ってました。
このように背景に文字がまぎれるので、OCRが失敗しやすいです。
なるほど、すでに検討されてたのですね。処理が激重になるとのことでなるほど、理解できます。なんとかできないものかなぁと思い、chatGPTで調査してみたところ、以下のような方法がどうかなと思いました。
文字部分の色(範囲指定無し)を透明色に変換したあと、画像の明度、彩度を0に変換します。その画像をマスクとして、元画像の上にマスク画像を重ねることで、背景のみ黒に変換できそうかなと。
cahtGPTでソース(C#)を作成して動かしたところ、希望通りに動きました。ソースは部分抜粋ですが、次にあげます。
PCOTの開発言語が何か不明ですが、同じようなことができれば処理時間も短くて実現できないかなと思った次第です。
あくまでアイデアとしてご検討いただければ、との思いでおります。
もしこの書き込みに不快な思いをされたようでしたら削除してください。
よろしくお願いします。
PCOTをご使用いただき、ありがとうございます。
ご要望についてですが、画像が添付されていないので具体的にどうしたいのかはちょっと分かりませんが、色置換の逆は実は前にやろうとしたことがあるんです。
安直に「逆色置換」と呼んでましたが、結果から言うと無理でした。
理由として、0(完全一致)を設定した場合は問題なく上手く行くんです。
下記の引用の通り
これを実装した途端、凄まじく処理が重くなってしまい、実用的な速度での置換が不可能でした。組み方が不味いのかもしれませんが、少なくともアルゴリズム的に今やっている色置換の判定を反転させるだけでは、上手くいきません。
恐らく処理が重くなる理由は置換する色が多すぎるせいだと思われるので、高精度に256色程度まで減色した画像であれば、上手く行く可能性があります。
高精度に色を減色するサンプルは前に見つけたのですが、かなり複雑な画像処理を行う必要があるので直ぐに対応するのは不可能です。
ただ、仰る要望は前々からやりたいとは思っているので今後もトライはして行こうと思います。
以上、ご理解いただけますと幸いです。
補足、「-1が不一致のもの」としましたが、-1~-100で範囲指定でもいいかもと思いました。-10に設定した場合は、色の近似範囲10から外れるものが変換対象になる、というのをイメージしています。ご検討のほど、よろしくお願いします。
お世話になります。
画像加工&OCR読み取り設定について要望です。
現状「指定した色」を置換することができるのですが、「指定した色以外」を置換することができるといいなと思いました。使用中のゲームでは添付のように背景に文字がまぎれるため、OCRがうまくできません。夜になり、背景が真っ暗だとOCRができます。なので、指定した色以外を変換できるオプションがあるとOCRができそうに思います。
添付画像では
①橙色を範囲100で橙色に変更
②白を範囲100で橙色に変更
③橙色以外をすべて黒に変更
という風に処理を重ねるといけそうに想像してます。
0が完全一致なので、-1が不一致のもの、というような感じだとUI変更も少なくて済みそうに思いますが。
ご検討のほど、よろしくお願いします。
ご愁傷様です・・・
断定はできませんが、dataフォルダとocrsetフォルダの二つを削除して頂くことで復帰できる可能性はあります。特にdataフォルダの中には色んな設定ファイルがあるので、壊れた設定ファイルを特定するのは困難です。
dataフォルダ内の[プロセス名].cfgファイルとocrsetフォルダ内の[プロセス名].ocrファイルは連動しているので、dataフォルダを削除する場合は、必ずocrsetフォルダも併せて削除してください。
履歴登録を行っている場合はhistoryフォルダも削除してください。
最悪それでもダメな場合は新しくDLして頂く他ありません。
無事復帰できることをお祈りしています。
当方も同じ現象に遭遇し、ここにたどり着いた
・標記エラーが発生する場合、破損しているのは設定フォルダの内容であり、それ以外のファイルが破損している可能性は低い
・設定情報をリセットしても構わない場合は、設定フォルダの削除で復帰できる
って事ですかね?
再インストールするとWindowsのセキュリティ解除の方が面倒で・・・
はじめまして。PCOTをご使用いただき、ありがとうございます。
お問い合わせの件に関してですが、ご推察のとおり英日以外は言語の混在に対応していません。
まず、先に言語を指定する特性上、どの言語をどう組み合わせるかという問題があります。それと、言語を複数指定した場合は、言語を単発で指定した場合に比べて明らかに読取精度が落ちます。
例えば韓国語のみの文章を読もうとしたときに、日本語+韓国語で指定すると、韓国語の中の日本語っぽい表記を無理やり拾って、原文の中に意味不明な日本語が混じる事態になります(これは既に実装済みの英日でも同様の事が起きます)
一番良い解決方法は有料になってしまいますが、Google Cloud Vision APIを導入して、Google OCRを利用することです。
こちらは、特に言語を指定する必要がないのと、多種多様な言語の混在にも対応していますし、読取精度も既存のOCRとは一線を画す性能を持っています。
以上、あまり答えらしい答えになっていませんが、参考にしていただければ幸いです。
はじめまして。オンラインゲームで韓国語の翻訳にいいのないか探して見つけました。
質問なのですが、韓国プレイヤーとの会話を翻訳したいときに日本語や英単語が文章に混じる場合、文字列が韓国語か数字に変換され翻訳されるのですが解決方法はあったりしますでしょうか?
英語翻訳の英語と日本語の場合は対応しているとの更新情報は見かけましたが、他言語はまだ未対応なのでしょうか?
PCOTを更新しました。v1.7.4
今回は不具合修正&マイナーチェンジです。
更新項目を以下に列挙します。
PCOTを更新しました!!v1.7.3
更新項目を以下に列挙します。
【注意点】既存のPCOTを利用している方へ
今回は多数のファイルを更新しています。
更新する場合は、PCOT同梱の「PCOTの更新方法.txt」にある「■確実な方法」で更新を実施してください。
【新機能】みんなの自動翻訳について
今回の更新でPCOTの訳文欄に直接みんなの自動翻訳の翻訳結果を表示できるようになりました!
みんなの自動翻訳は国立研究開発法人情報通信研究機構が研究開発している自動翻訳サービスです。利用するにはアカウント登録が必要となります。
利用登録はこちらから→みんなの自動翻訳@TexTra®
例によってみんなの自動翻訳の導入方法、及び利用方法の資料を作成しました。
みんなの自動翻訳の資料(1/4)
みんなの自動翻訳の資料(2/4)
みんなの自動翻訳の資料(3/4)
みんなの自動翻訳の資料(4/4)
この機能の作成にあたり、沢山の方にお世話になりました!
この場を借りてお礼申し上げます!
改めてコメント頂きありがとうございます。
個別の事柄について返信する前に、先に現在の状況をお話させて頂きますと、PCOTは現在GitHubでプライベートリポジトリとして運用しています。
上記を前提として、ご提案について返信させて頂きます。
ご提案の骨子として、公益性を重視されているようですね。
まず、今のPCOTには秘匿したいソースが含まれています。
技術面の話ではなく、私が個人的に使いたい機能でそれをあまり公にしたくない事情があります。これについての言及は避けさせてください。
上記の理由と、あとソースを渡す人は私自身が選びたいのです。
具体的にはPCOTの長所と短所を理解した上で更に利便性を向上させたい方や、ITの分野でスキル向上を図る目的でPCOTを解析してみたいという方などが該当します。
上記に該当する方には個別で対応しています。
セキュリティホールの確認など、確かに公益性を重視するのであれば有意義なご提案ではあるのですが、私のモチベーションが続く限りは私一人で開発を続けていくつもりです。もちろんPCOTを利用する方は完全に自己責任となるので、セキュリティホールを懸念される方がPCOTを利用しないのも、それもまた自由です。
収益化については現在も全く考えていません。
今現在、NICTのみんなの自動翻訳を利用した機能を実装中ですが、みんなの自動翻訳は商用利用を禁止しています。
みんなの自動翻訳の機能を組み込んだ時点で、PCOTは永劫フリーソフトという位置づけになります。
最後に乱暴な言い方になりますが、仕事であれば別ですが、開発に関して知らない人とは誰とも関わりたくないので、もしPCOTのソースを公開する場合は、私自身がPCOTの開発から身を引く時(まさに丸投げですね)だと思っています。
長くなりましたが、ご理解いただけますと幸いです。
(アカウント登録したためアイコンが変わっています)古いスレッドにレス失礼しました。
PCOTをオープンソースにして欲しい理由は、(これはオープンソース全般に言えることですが)単純にその方が多くの人が開発に参加でき、ぬるっぽさん自身も含め全員の利益になると思ったからです。それと現在Windowsに「安全性が確認されてないソフト」判定されてしまいますが、ソースコードが公開されていればセキュリティホールが無いかなど誰もが確認できるようになるからです。
過去のインタビュー記事で収益化などは全く考えてないと書かれてましたが、もし今は気が変わって将来的に収益化したいなどの理由でオープンソースにしてないという事ならもちろん構いません。あるいはMusicBeeのように完全無料ソフトでもオープンソースでないソフトはありますし。
過去ログを読む姿勢にはとても感銘を受けるのですが、レスの話題が古すぎます。
当時と現在ではかなり状況が変わっているので、Lamronさんの一つ前の投稿にもレスしましたが、過去の事情をそのまま現在に持ち出されても困惑してしまいます。
「雰囲気」と書いている通り、完全に個人の感想です。他人に同意を求めていません。
先に返信したコメントとこのコメントのどちらにも返信は不要なので、新規のコメントでソースコードを公開していない理由を追求する前に、どうしてソースコードを公開して欲しいのか、Lamronさん自身がPCOTのソースコードを利用して何をしたいのかを記述して頂きたいです。
かなり古いスレッドにコメントがついていてビックリしました。
結論を先に書くと、ソースコードは現在公開していません。
当時は落ち着いたといいつつ、未だ開発は続いています。
元スレッドの時期は他にやりたいことがあって、PCOTを早く手放してしまいたい気持ちが強かったのです。
3年前位に名乗り出ていただければまた違った結果になっていたかもしれません。
最初の投稿のリンクが404なのですが、現在はこちらで代理更新されてるという事でしょうか? https://github.com/ricoisme/PCOT
ただTwitterを見ると現在もぬるっぽさんは更新を続けてるようですがGitHubにアップする予定は無いと言う事でしょうか……?
「アカデミックな雰囲気が意識高くて苦手」と言うのが正直よくわからないのですが、GitHubには「フォーク」という機能があり、誰もが(元の作者が誰かが明記された状態で)「コピー」を作り更新を続けていけるようになっているので、
という時が来たらいつでも「丸投げ」できるようになっています。
こちらリンク先に何も表示されないのですが、ソースコードは削除されてしまわれたのでしょうか?
それとGitHubなどメジャーどころで公開する予定は無いのでしょうか? 現在開発は一段落とのことですが、GitHubなどなら他の人による改善も期待できると思うのですが。
PCOTを更新しました。v1.7.2
更新項目を以下に列挙します。
新機能:対ムービー最終兵器
今回はムービーを快適に翻訳するための機能として「範囲選択時に対象プロセスのスレッドを停止」の派生オプション、「次回アクティブになるまでスレッドを停止」という機能を追加しました。
便利は便利ですが、曰くのある機能なので必ず下記の資料を読んでください。
新機能資料(1/3)
新機能資料(2/3)
新機能資料(3/3)
今回は色々手直しして取っ散らかってきたので、キリよく更新しましたが、次回の更新は、NICTで新たに公開された「MINHON_WebAPIHelper」を組み込む予定です!
乞うご期待!!
PCOTをご利用いただきありがとうございます。
お問い合わせの件についてですが、Windows10 OCRを利用する為には対象の言語パックをインストールして頂く必要があります。
導入方法は以下の記事が参考になると思います。
「Yamachannel Blog-YouTube」
https://yamachannel-blog.com/game-translation/#rtoc-10
注意点として、利用の可否判定はTesseract OCRに依存しています。
英語以外の言語(例えば中国語)でWindows OCRを利用したい場合でも、Tesseract OCRの言語データのダウンロードは必須です。
また、動作対象のOS(Windows10, Windows11)だとしても、OSのエディションが「単一言語エディション」だと、残念ながら利用できません。
利用条件を満たした上で利用できない場合は不具合の可能性があるので、その時は再度お問い合わせください。
使用ocrエンジンで、tesseract OCRしかなく、windows OCRが選択できません。windows11を使っているのですが何か解決方法はありますでしょうか?
範囲選択時に対象プロセスのスレッドを停止 をすることでしっかりと翻訳することができました。ありがとうございます
PCOTをご使用いただき、ありがとうございます。
お問い合わせの件についてですが、本来それはマインクラフト独自の仕様だと思われるので、こちらで対応できる範囲が限られることを先にご承知おきください。
以上を踏まえた上で、PCOTにはマウスオーバー時にしか表示されないポップアップを翻訳する為の機能として、以下の二つの設定があります。
メイン画面>上部メニューの「設定」>システム設定
・範囲選択時に対象プロセスのスレッドを停止
・範囲選択時にスクリーンショット取得
問い合わせの内容を見る限り、一瞬だけマインクラフトの画面に切り替わるということなので、どちらの方法でも上手く行く可能性があると思いますが、毎度マインクラフトの画面をアクティブにする必要があると思うので、スレッドを停止させる方をお勧めします。
ただ、スレッドを停止させる方法はプログラムを強制的にフリーズさせるため、かなり不健全です。この設定のせいで何かしらおかしな挙動になったとしても責任は負えません。自己責任でお願いします。
逆にスクリーンショットを取得する方は、対象プロセスに対して何も干渉しないので安全ですが、先に書いた通り、デスクトップから毎度マインクラフトの画面をアクティブにする必要があります。
一応どちらも試してみて貰いたいです。
また、可能であれば試してみた結果をご報告頂けると助かります。
PCOT ver1.7.1でjava版マインクラフト 1.20.4でMODの英語を翻訳しようとフリー選択すると一瞬だけマインクラフトの画面に切り替わるのですがすぐにデスクトップ画面が映し出されるため翻訳できません。文章では表現に限界があるため動画などを送れればわかりやすいと思うのですが。
PCOTを更新しました。v1.7.1
更新項目を以下に列挙します。
・隠し機能(今度こそ)完全復活!
・画像加工&OCR読取設定で加工工程を見易いように表を引き伸ばすようにレイアウトのアンカーを修正
今回の更新は画像加工を修正する前の安定バージョンです。
次回の更新では画像加工に減色とガンマ補正の加工を追加する予定です。
また、減色追加に伴い、今あるグレースケールの4値化及び8値化を廃止します。
※グレースケール前後に4色、あるいは8色に減色すれば同じことができるため。
ご不便をおかけして申し訳ありません。
もしご存じでしたら、中国からもダウンロードできる無料のアップローダーを教えて頂きたいです。
中国大陸からOneDriveにログインできないため、ダウンロードや使用ができないのは残念ですね😭😭
PCOTを更新しました!v1.7.0
更新項目を以下に列挙します。
・辞書リストと履歴リストでフィルター中に編集されても検出されない不具合を修正
・Tesseractで空白のみのオブジェクトを削除するように修正
・隠し機能で文節ごとに改行されてしまうのを元の改行情報に復元するように修正
・隠し機能で利用しているWebDriverのリセットを追加(詳しくは説明書.txtの一番下を参照)
・中国語(繁体字)の正式対応
你好世界!
在志工的幫助下,日本領先的遊戲翻譯工具「PCOT」終於正式增加了對中文(繁體)顯示的支援!
希望 PCOT 對您有用!
※本文使用 PCOT 從日文翻譯成中文(繁體)。
無事、問題も解決しとても快適に使えるようになりました。的確なご説明をありがとうございました。
こちらこそはじめまして。PCOTをご利用いただきありがとうございます。
お問合せの件についてですが、フリー選択後、読取失敗してもキャプチャー画面が閉じないとのことですね。
キャプチャー画面を閉じる方法は3つあります。
1.タスクバーのPCOTのアイコンを右クリックし「ウィンドウを閉じる」を選択
2.キャプチャー画面がアクティブな状態で「Alt+F4」を押す
3.キャプチャー画面がアクティブな状態で「ESC」を押す(簡単でお勧めです)
また、読取失敗しているのにずっとキャプチャー画面が表示されるのは困るという場合は、以下の設定をご検討ください。
メイン画面上部メニュー>設定>システム設定
【システム設定】
「OCR読取失敗時の挙動:(デフォルト:100)秒後に閉じる」のオプションを
任意の秒に設定して、すぐに閉じるようにしてください。
ただし、0秒に設定してしまうと、ノータイムで閉じるので読取失敗したかどうか判別できません。1~2秒程度がお勧めです。
以上、ご参考になれば幸いです。
はじめまして。THE ROOM4というゲームの翻訳に使わせてただいています。とても便利で使い勝手もよく重宝しているのですが一つ操作がわからないので教えてください。
普通の文字は問題なく読みとれるのですが、日記のような画面で筆記体で大きさも異なるような表記が読みとれずをフリー範囲指定で何度か読み込ませてみましたが読み取れず、(実際に読みにくい文字なので)あきらめたのですが読み取りエラーで範囲指定のモードからゲームに戻れずそのたびにPCOTを強制終了することで対応しているのですが読み取りエラー後にフリー選択を解除するにはどうすればよいのでしょうか?
そうでしたか・・・残念です。
PCOTそのものの不具合でない以上、こちらからはどうしようもないです。
お役に立てず、申し訳ありません。
やってみましたがまた落ちてしまいました
PCOTを更新しました。v1.6.9
更新項目を以下に列挙します。
・Common.dllを廃止して共通部品を本体に統合
・システム設定に言語選択オプションを追加
・PCOTの画面UIを中国語(繁体字)に対応(80%位完了)
・隠し機能を利用できるように修正
・スタート画面のタイトル列を右クリックでプロセスを無視メニューを表示するように修正
【注意】既存のPCOTを利用している方へ
今回は多言語対応の関係上、最終的に148ファイルという過去最多のファイルを更新しています。
更新する場合は同梱の「PCOTの更新方法.txt」に記載されている「確実な方法」の通りに更新してください。
他のプログラム(Steamやブラウザ等)で正常に動作する場合は、Robloxが不正ツール防止の為に意図的に落としている可能性があります。
あまり推奨できませんが、システム設定で「範囲選択時に対象プロセスのスレッドを停止」にチェックすると、もしかしたら落ちるのを防止できるかもしれません。
Robloxで使うとなぜかRobloxが落ちてしまいます
恐らくですが、DPIスケールが半端な数になっているとレイアウトが見切れて表示されてしまうようです。
100%, 125%, 150%では正しく表示されると報告を受けています。
システム設定を開くと切れていて下の確定リセットキャンセルが表示されていません
PCOTを更新しました。v1.6.8
更新項目を以下に列挙します。
・設定ファイルの同期処理の不具合を修正
・画像ビューアの不自然な挙動を修正
・辞書リストで全ての辞書が非表示になっている時の編集を検知できない不具合を修正