生成AI(gemini)を使って16進ダンプリストを入力する

BASICMASTER, 昔のパソコン

過去のプログラムで遊ぶ時に 避けられないのがプログラムリストの入力である。

BASICであれば、入力時・実行時にエラーが出るので、まだなんとかなる。
でも、16進ダンプは打ち間違えると、プログラムが暴走してどこで間違えたかわからない。

後年になると、縦横チェックサムが考案されて チェックは楽になったのだが、入力の手間は変わらなかった。

近年、“Program List OCR” などの優秀なOCRソフトウェアが開発され、入力の手間は格段に楽になったのだが、それでも事前・事後の整形やチェックに少々手間がかかる。

もっと手間を省けないかと考えているうちに閃いた! 生成OCRに全部やらせれば良いんじゃない?

Geminiに16進ダンプを喰わせてみた

いくつかの生成AIで試してみたのですが、私が使った範囲では Google gemini が 精度が高くて楽に読み込みができます。

サンプル:私が高校生のときに作ったミニプログラムのマシン語部分です。

BMUG会報 BASIC MASTER USER’S GROUP No.5 MAY 1982 に掲載されたもので、日立の放電プリンター(MP-1010)で印刷したものです。

さて、これをGeminiに食わせてみます。画像データをdrag-and-dropして、以下のプロンプトで処理してみました。

「イメージの16進ダンプを読み取り、元のフォーマットに合わせてテキストにしてください。0のフォントは斜め線が入っています」

読めてるぜ! マジかよ!


精度を確認するために、正しいデータとdiffを取って、色付けしてみました。

やはり、0と8とBは区別しづらいようです。人間でもわかりにくい時があるので仕方がないですね。それ以外の部分の間違いは少ないので、0/8/Bが現れる部分だけ重点的にチェックすれば、ほぼミスは無くなります。

1バイト丸々欠落している部分もありますが、これはわかりやすいので修正は楽です。

フォントを事前に与えて、精度を上げることもできるかなあ?

リンク