16進ダンプ入力ツールを作り直した!

先日からはてなブログのランキングというのに参加している!

特になにかあるわけではないけど、せっかくなので…という程度の理由!(^^;

よかったら上のバナーをクリックしてくれると嬉しいです!(^o^)

 

先日、ブログやTwitterでダンプリスト入力ツールを作ったというご報告をした。

趣味…というよりは、とある件で必要になってしまったため、急遽作成って感じだ!!

 

pocketgriffon.hatenablog.com

仕様検討もせず急いで作ってしまったからか、使い始めてみると色んなところに不満を感じるようになった!

 

 拡大表示は必要なかった!

 右側のアスキー文字は見る機会がない

 画面に並べた時、小さいウィンドウの方が扱いやすい

 OCRでの取り込みがツールの外でしか出来ない

 ページの関係でダンプが2〜3つに分断してる事がある

 

これら以外にもプログラムの内部構造が良くなかったりなど、不満を上げたらキリがない!

こんなたくさんの改良をするのならば、いっそ作り直そう!となった(^^)

 

そして新規に開発したのが↓コチラ↓

見た目はそんな変わんないじゃん!と言われそうだけど、まさにそう(^^;

でも内部構造は大〜きく変わった(^-^)

描画に対する処理負荷もかなり改善された!

 

まず大きさだけど、こんな感じの違いがある!

ダンプリストの編集を見つつ、撮影したダンプリストの写真を同一画面で見ていたりすると、そのたびに大きな編集ウィンドウが邪魔になっていた。

アスキー文字は思ったよりも見てなかったので、思いきって削った(^^)

 

OCRはYao Tadahito(八尾 唯仁)さん(@eighttails)のHEXモデルを使ったら、精度が爆上がりする事がわかった!

 

このおかげもあり、この先は手入力よりもOCRが中心となるであろう未来が見えたので、拡大文字自体が必要なくなってしまった!

前回の目玉機能だったのにww

 

まずは素の状態で起動するとこんな感じの画面が出る。

前作にあったEmacsバインドのカーソル移動はそのまま継承している。

テンキーには対応して無く(ウチのMacBookProにはテンキーがそもそもない…)、あくまでもフルキーでのみ入力が可能だ。

 

一番下の「読んでいるファイル」の表記は、撮影用に名前消し機能をつけた!

私の名前限定だ!ww

 

↑ESCキーを押すとメニューが表示される。

1980年代のメニューっぽく見えるが、完全に作者の趣味だねw(^o^)

実はMacのメニューバーにメニューを追加する方法を知らないのですわ…orz

SDLで(ソースレベルで良いので)Mac/Linux/Windowsの互換性を保ちつつ、どうやったら出来るんだろ??(-_-;

 

大した意味もなくAbout画面も用意した!

こういうのにも凝りまくってテンションあげていくぜーw (^^;;

 

メニューからOCRを選ぶと、こんな画面が出る。

このためだけにファイラー作った!(^-^;;

それっぽいファイラーを作るのって1992年以来なので30年以上ぶりだ!

当時はX68000で作ったなぁ…(遠い目

 

そしてカーソルを動かしていくと、右側に画像を表示する機能をいれた。

これはOCRするたびに「あれ??次はどの画像ファイルだっけ?」と中身を覗いていた苦い経験からだ(TT)

主にアドレスが確認出来れば良いので、画像の左上しか表示させていない(^^)

 

↓リターンを押せばOCRが実行されて……(画面上部にメッセージ)

 

↓終わるとこんな感じに、認識した文字列がずらずらーっと表示される。

実際のOCR処理は、

OCRで認識されやすいように画像加工

・tesseract実行

・出力されたテキストデータをもう1段階加工

などをしてデータを整頓している。

一応、tesseract以外でも認識率があがる努力はしているつもり(^^)

 

アドレスで入力状態になっているのは「OCRで認識したアドレスはコレだけど、ホントにあってる?間違ってたら修正して」という意図だ。

 

いったんデータをメモリに書いてしまうと取り消す事が難しいため、ここで使用者のチカラをアテにして、確実にアドレスを確定させる。

 

メニューを終えて戻ると、さっきOCRで読み込んだデータが見える…という感じだ。

ちなみにこの画像だと認識率100%!

100%ってすごくない???(@_@;;;

 

データとチェックサムが違っていると、こんな感じに赤文字でどこが変か教えてくれる。

この場合、データもそうだけどチェックサム自体が間違ってる可能性もある。

 

そこで使うのがメニューにあるCheckSumモード。

ここで正しいチェックサムを入力する。

そうするとデータがおかしいのか、チェックサムがおかしいのかがわかる…という事だ(^^)

 

あとダンプリストの掲載で良く見かけるのが、ページをまたいだブロック!

今までは複数ページにまたいでる部分は、素直に手入力をしていた。

そんな数が多いわけじゃないからいいでしょ…と(^^;;

でもコレも可能ならばOCRで読み込んじゃいたい!

そこで、今回はこのページに跨いだデータもOCR出来る機能を入れてみた!

 

↑こんな感じに切り取った写真データを用意する。
縦横の幅は特に意識しなくても良い(ツール側でよしなに合わせてくれる)

 

↑ファイルの上でスペースを押すと、そのファイルが選択される。

選択された画像を合成することで、一気にOCR処理をしようって魂胆だ(^^)

ファイルの頭に番号がついているのは、どの順番で画像を合成するのかの指定。

この辺りの実装のダサさも良い感じだw

 

ぐは!

合成したデータであっても認識率100%が出た!(^o^)

 

おわりに

手入力が好きなんだぜ!

……と言い張って開発したダンプリスト入力ツールだったけど、気がつけばOCRに便利なツールが出来上がってしまったw

 

実際に使ってみると…これだけダンプの認識率が高いと、すごく手軽に入力が出来る。

写真さえ撮ってしまえば、あとはほぼ単純作業だ!

むしろ写真を撮って加工する方が圧倒的に時間がかかる!(^-^)

 

横8バイト並びのダンプなどにはまだ対応していないが、プログラムのいたる所に布石だけは残してあるので、対応する事自体はそんなに難しくない…と思われる!(^^)

 

よーし!今まで入力を控えてたゲームも入力してみるぞ!(^^)

…はて、入力したデータって、どうやってエミュレータに入れ込むんだっけ?(^-^;;

 

ではまた次回!(^-^)ノ