質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

607閲覧

ゲーム画像の数字認識したい

mypt

総合スコア170

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2グッド

2クリップ

投稿2023/04/14 08:42

編集2023/04/18 15:46

実現したいこと

ゲームのステータス画面のスクショから
ステータスを数値で取得して記録するようなウェブアプリを作りたいです

発生している問題

Tesseract.js というのでOCRを行ってみたのですが
漢字やレイアウトは完全に固定で変化する数字だけ認識したいだけなので
簡単にできるかと思ったんですが認識精度がかなり悪いです

該当のソースコード

https://jsfiddle.net/gq4ry9ha/2/

試したこと

イメージ説明
という画像を読み込ませたところ以下のように後半の数字はかろうじて読めてますが
前半の桁数の多い数字や少数点なんかが認識されません

@ RENIBEEBELR IS 5370 " 5370 [5:15:val 72704 I Bl 13018 Eisin 16471 R BE P 336 387 (g 11 7 DTV EEE 87 41 | DUTAANEA=Y 2288, 2617 Bl 1245 127 | " BASA— 1940 2315 [ b-sina) 90 96 YO T Ry IEA—Y 59 58 IBNAA— 170830 202838 HA-ViED 2001 1552 = 2 EAA—BMEA-Y 111230 59178 ERA-FEN 159 126 =LA Ligil 827 TERR(E 2600 TATLFOyTE 356 AT AFERE 22026 Ely IEFE 923 DL SR 464 TRENEE 513

whitelist を使われてる文字と数字だけに限定したり
言語を jpn にしたりしてみましたが悪化するだけでした

ラベル部分は固定で読む必要はないので英語モードでも
無視すればいいだけなんですが長い桁の数字は読めてほしいです

https://ezocr.net/OCR
こちらの有料?のGoogle API を使ってる回数制限のあるサービスだと
以下のようにほぼ完璧に認識できています

能力値詳細情報 筋力 魔法 HP sp 武器攻撃力 防御力 属性 抵抗 792468 「体力 872856 ☆幸運 命中率 回避率 クリティカル確率 クリティカルダメージ 最小ダメージ 最大ダメージ 貫通力 バックアタックダメージ 追加ダメージ ダメージ減少 モンスター追加ダメージ モンスター支配力 クールタイム減少 経験值 アイテムドロップ率 オプション発生確率 Ely 獲得量 クエスト報酬 移動速度 3786881/4474100 2400200/2621978 5370 5370 物理 72704 13018 16471 一般 336 11 37 2288 1246 1940 90 59 170830 2001 111230 15.9 400512 400948 32.7 2600 356 22026 923 464 513 魔法 387 7 41 2617 1427 2315 ボス 96 58 202838 1552 59178 12.6

無料のライブラリだと限界なんでしょうか
パラメータやオプション等で改善する方法や
Tesseract.js 以外にもjavascript から使えるOCRライブラリがあれば教えていただけるとうれしいです


4/18 追記

コメントで頂いた通りモノクロに加工したらすごーく認識精度が上がりました
ただやっぱり上部の太字の数字は一切認識できないようです
同じ画像内でフォントが違うとダメみたいですね

あと向上したと言っても8割ぐらいで実用にはかなり遠い感じです

該当のソースコード

https://jsfiddle.net/3yjwL0fx/3/

認識結果

12~ 1 3 51 . 15 3786881/4474100 5 3 2400200/2621678 3151271 53705370 5 72704 5 1201 151 18471 2 55 5 5 29 335 587 59 1 7 7 5471/ 5 9 7 0 75471/ 9 7 2286 2017 /1~9 ~ / 1246 1 3 1240 5 5171 9 95 ~~7779~779 ~ / 5 5 5 119 ~ / 170830 20283 9 75 ~ 2001 552 ~ /4 1 . 111080 1 2 158 125 7 / 94 5 ~ 527 93 1 2500 76 3~779 350 377395 5 9 2028 9 65 023 2 454 1517151 2 513
shinoharat, yagihiro👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poto568

2023/04/14 09:01

昔ざっくり使ってみた感じ、やっぱり無料よりも有料の方が精度高かったですね。 レイアウト固定なら、数値の部分だけ画像を切り出してひとつひとつOCRすると いい感じにできるかもしれません。手間ですが…
yagihiro

2023/04/17 16:11

コントラスト変換してからOCRしたり、グレースケールに変換してからOCRしたりすると読めるかもしれない気がしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問