社畜のPUBGモバイル奮闘記

こんにちは!がちむちです!PUBGモバイルの奮闘記や育児のことだったりをつらつら書きます。

PUBGモバイル ルームの結果の自動文字起こし

こんにちは!がちむちです! 以前ルームの結果画像から文字起こしをする何かを作ってみようかと思ったのをやってみました。

先に結果

無理でした。自分の浅はかな知識では無理でした。 f:id:gekilowch:20200909115117j:plain

最終目標

まずは、サンプルデータを用意する f:id:gekilowch:20200909120548p:plain これを順位、チームメンバー、キル数でまとめ、csvとかで提供できるようになるのが、最終目標

OCRを利用する

まずは、画像から文字を起こす技術的なことをOCRと界隈では言うらしい。

ja.wikipedia.org

で、OCRを利用できる方法を調べました。
現状では、ライブラリの利用、PublicCloudを利用する方式が大きくあります。

tesseract

無料で利用できるライブラリ。 ja.wikipedia.org

Google Cloud Vision

Googleが提供するCloudサービス。有料。 cloud.google.com

Amazon Textract

AWSが提供するCloudサービス。有料だが、安い aws.amazon.com

Microsoft Azure Computer Vision API

Microsoftが提供するCloudサービス。有料 azure.microsoft.com

検証

tesseract

M ロ HILE R た E 0 お H 誌 P ⑨ R は が I ⑲ 誌 梨な 手 は コ ⑤ キ ル 【 R た ⑦ 国 山 味 ル 號 H か e お ⑨ R が I 味 ル BB〆Jnzee ④ キ ル 幅 朗 ソ 明 日 山 0 お ー ば り っ ち ぇ 0 お R 誠 e ① B 【 お P I 助 TK。 し ほ ん ち ゅ し の Ine 圃 誓 【 I ② キ ル E に ⑨ n 着 R 眼 ⑨ E J た I ① は ③ J ⑨ b 峠 託 し ④ め ま さ ② ド ③ り ト m 詞 詞 I ⑲ 【N〆 け と ら ぁ HE⑨ 7 P 和 0 R 継 まま ③ に ② キ ル I 紗 闇

えっと、、、あの、、、ありがとうございました。

Google Cloud Vision

さっきのリンクから画像を投げて試すことができます。
f:id:gekilowch:20200909121557p:plain うぉぉぉ!!いい感じじゃない!!!???キタんじゃない!? f:id:gekilowch:20200909121550p:plain 結果:キル数が取れていたり、取れなかったり、0がロと認識されたり、、、クランタグと名前の間がちゃんと取れなかったり、、、(´・ω・`)ショボーン

正直Googleが提供するもので、ダメだと同しようもない気持ちになってきてしまうダメエンジニアです。
いや、まだだ!!まだ終わらんぞ!!!スネェェェェーーーーク!!!

Amazon Textract

こちらは、awsのアカウントがあれば、試すことができます。 f:id:gekilowch:20200909122059p:plain えっと、、、あの、、、えっと、、、あの、、、日本語、、、ジャパニーズぷりーず、、、

Q: Amazon Textract で検出して抽出できるのは、どのタイプのテキストですか?
A: Amazon Textract は、標準的な英語のアルファベットと ASCII 記号からラテン文字を検出できます。

未対応ですか、、本当にありがとうございました。

Microsoft Azure Computer Vision API

ビル・ゲイツお前ならやってくれる!!!頼む!!!
こちらも無料で試すができますが、awsとかgcpみたいにイケてるページを用意してくれず、curlなどを駆使するスタイルです。
多分行けるはず! Windows98の感動を!!!!!

{"language":"ja","textAngle":0.0,"orientation":"Up","regions":[{"boundingBox":"121,329,364,938","lines":[{"boundingBox":"279,329,153,30","words":[{"boundingBox":"279,329,42,27","text":"GLG"},{"boundingBox":"332,342,7,7","text":"・"},{"boundingBox":"351,333,25,26","text":"堀"},{"boundingBox":"379,332,26,26","text":"之"},{"boundingBox":"408,333,24,26","text":"内"}]},{"boundingBox":"279,395,180,29","words":[{"boundingBox":"279,395,14,27","text":"G"},{"boundingBox":"295,395,11,27","text":"["},{"boundingBox":"307,395,14,27","text":"G"},{"boundingBox":"332,408,7,7","text":"・"},{"boundingBox":"351,398,27,26","text":"が"},{"boundingBox":"381,399,22,24","text":"ち"},
.....

こちらも精度がなんとも言えず、、、正直使いものにならなそう、、、、
ブルースクリーン状態です。

サンプルを変えてやってみる

サンプルの画像はファイルでかいので、もっと領域を小さくてみたらいいのでは?と思って再チャレンジしてみました。 f:id:gekilowch:20200909123346p:plain

ある程度改善はしたが、精度が相変わらず、微妙なので、正直使い物にならなそう、、、

課題

プレイヤー名がどうしてもいろいろな文字があるので、ここの信頼度を上げられる気がしないのと、よくあるクランタグと名前の間の文字が結構いろろな記号やらなにやらを使っているケースが多く、ちゃんと認識できるか怪しい。

まとめ

もっとナイズドして、ゴリゴリに学習させてシコシコすれば、行けるのかもしれない?が、そもそも、こっち方面に自分が造詣が深くないので、これ以上はめんどくさい時間がかかりすぎる気がするので、一旦ストップ。

もし、こういった技術などに詳しい界隈の方がいらっしゃったら改善策とかあればコメントとかください。