「Program List OCR」の追加報告

前回の記事でも取り上げた、eighttails氏が公開されたOCRソフト、「Program List OCR」でいくつかのプログラムリストを認識させてみました。

 
プログラムリストとプリンターの関係について

プログラムの打ち込み経験のある方ならご存知かと思いますが、当時の出版物に掲載されたリストは、プリンターで出力したものをそのまま掲載するという形を採っていました。そしてよく見ると、雑誌によって、あるいは機種によって、リストの字体が異なっているのに気づかされます。
これは、FMシリーズ対応、PCシリーズ対応、MZシリーズ対応……といったように、各々のPCに対応したプリンターが存在したためです(ただし、複数の機種に対応したプリンターも少なくはありませんでした)。各プリンターが持っているフォントの字体がそれぞれ異なるため、様々な字体によるリストが掲載されることとなったわけです。

さらに、たとえばFMシリーズ対応プリンターは多数発売されていたので、雑誌AはX社のプリンター、雑誌BはY社のプリンター……というように、同じFMシリーズ用のリストでも雑誌ごとに字体が異なることとなりました。もっといえば、同じ雑誌でも年代によって採用プリンターが変わったりもしています。
これらのことはたとえば、多数の機種のリストが掲載されていた「マイコンBASICマガジン」を見るとよくわかります。リストを見ただけで、どの機種用のプログラムかがわかるというケースもありました。

それでも、現在の一般的なOCRソフトは多少の字体の違いも読み取ってくれるものですが、当時のプリンターは解像度が低かったのに加え、前述のようにプリントアウトしたものをそのまま掲載しているため鮮明さに欠けるケースも多く、OCRで認識させるのは困難であろうことは容易に想像できます。
にもかかわらず、この「Program List OCR」は高い精度でリストを読み取ってくれます。PC-6001用リストに合わせて言語ファイルを作ってあるということですが、前回の記事でも取り上げたように、FM-7用リストでもきちんと読み取ってくれました。
とはいっても、FM-7用リストも掲載誌、あるいは時期によって様々な字体が使われており、一括りにできるものではありません。そこで検証の意味も含めて、4つほどのプログラムリストを認識させてみました。イメージ化を行なう際の参考になれば幸いです。

なお、リストのスキャン画像は、「Program List OCR」のマニュアルにあるように600dpiで取り込み、画像補正やグレースケール化などを施したものを読み取らせています。リストの編集には「サクラエディタ」を使用し、行番号、予約語、REM文、ダブルクォーテーション内文字などに色づけをして見やすくしてあります。フォントはVLゴシックを使っています。


 
テスト(1) 影ちゃんのSEA DIVING
■マイコンBASICマガジン 1983年8月号掲載/BASIC

このプログラムは、本来はMULTI8用として掲載されたものなのですが、キャラクターのパターンデータ部分のみを差し替える(REM(’)を外す)ことによってFM-7/8/11でも動くようになるという、珍しい形態の作品です。当時リストを打ち込んだのですが、行方不明になってしまっていたので、それを取り戻すべく、イメージ化に挑んでみました。
リストの字体は同誌のFM-7用リストと同一に見えますので、同じプリンターで出力していたのかもしれません。どのプリンターを使っていたかは知る由もありませんが、「Oh!FM」1984年7月号の特集、「おいしいプリンタ大研究!」内に当時発売されていたプリンターの印字例がいくつか掲載されており、これから推測するにエプソンのRP-80シリーズ(もしくは、前身のMP-80?)あたりのような気がします。いずれにせよ、このリストがOCRできちんと読み取れれば、ベーマガの他のFM-7用リストも読み取れることになります。


結果ですが、目につくのは0(ゼロ)がO(オー)として認識されてしまっている箇所が多いことですね。この2つは間違えやすい代表的な文字ではありますが、大きな原因は、このプリンターのゼロがスラッシュ付きのゼロではないことでしょう。スラッシュ付きだったら、ほぼ正しく認識していたと思います。ほかには数字の「6」を読み取るのが苦手なようで、「&」や「の」になっている部分も見受けられます。
BASICの場合、各行の冒頭は必ず数字になりますので、たとえばスペースにぶつかるまでは各文字を0~9として認識するようにできれば、ミスは減るかと思います。
そのほかは概ね正しく認識できており、多少の手直しでイメージ化が行なえました。

 
 
テスト(2) Oh!FMスロットマシン
■Oh!FM 第5号(1983年10/11月号)掲載/BASIC+ダンプリスト

ダンプリストの認識率を確かめようということで、手頃な長さのマシン語プログラムのあるリストを探し、選んだのがこのゲームです。単純なスロットマシンのゲームなのですが、1983年7月に東京で開催された「パソコンFM祭」というイヴェントのOh!FMブースで、プレゼントの抽選用に使われたものだそうです。


プログラムリストのフォントは、初期の「Oh!FM」で全般的に使われていたタイプのものです。ほかにも、「ログイン」や「プログラムポシェット」などでも多く見られます。PC-8001/8801/9801系のリストでよく見る印象なのですが、どうなんでしょうか?
このプリンターは印字がとてもクッキリしており、ゼロにスラッシュも入っているので、かなり高い精度で読み取ってくれます。1190行や1210行など、きちんと読めていない部分もありますが、全体的に見れば完璧に近い優秀さです。


ダンプリストに至っては、100%完璧に読み取れていました。やはり使用文字を限定すると効果が高くなりますね。このフォントのリストなら、「Program List OCR」を通して楽にイメージ化できると考えてよさそうです。

 
 
テスト(3) 撃墜王
■T&Eマガジン 第2号(1984MAR)掲載/BASIC+ダンプリスト

「T&Eマガジン」はT&Eソフトがファン向けに発行していた情報誌で、同社の市販ソフトのプログラムリストがいくつか掲載されていました。第2号に掲載されたのが、FM-7/8用の「撃墜王」です。ただし、市販版にあるタイトル画面の零戦のグラフィックスは、掲載版ではカットされています。
このプログラムリストは、前出の「影ちゃんのSEA DIVING」と同じ字体のもので、しかもダンプリストのバックの一部にゼロ戦の絵が描かれているという悪条件なのですが、どこまで読み取ってくれるのかということで挑戦してみました。


BASIC部分は、やはりゼロがオーとして認識されているところが多いです。オーのほかに、○(丸)に変換されているケースもありました。
ほかにも細かい認識ミスは散見されますが、簡単に手直しできる程度で済みました。たとえば、180行のPRINT文内のスペースがリストより1つ多かったのですが、これだけ連続した空白で誤差が1つだけなのは素晴らしいといえます。


一方ダンプリストのほうですが、当然ゼロはすべてゼロとして認識していますし、ほとんど正確に読み取れています。ただ、画像が被っている問題の部分は、やはりまともに変換できていませんでした。さすがにこれは厳しいですね。まあ、リスト全体にかかるような大きな画像ではないですし、修正は大した手間ではありませんでした。それより、このリストはチェックサムがついていないため、1行ずつチェックするのがとても大変でした。直接請求すれば送付してもらえたようですが、今となっては……ですね。

 
 
テスト(4) Oh!FMの音
■Oh!FM 1987年8月号掲載/BASIC

毎回ジョークプログラムを取り上げていた「きょうふの水曜日」のコーナーに掲載されたプログラムです。このコーナーのプログラムはあまり打ち込んでいなかったので、その中で手頃なショートプログラムだった本作をOCRにかけてみました。


リストの字体は、Oh!FMの中期以降で全般的に使われていたもので、漢字対応のプリンターによる印字だと思います。そのため解像度が高めですし、英数字はセリフ体で印字されるので一般的な活字に近く、OCRとの相性はよいと思われます。
実際、ゼロはスラッシュが入っていないのに完全に読めていますし、全体を見てもかなりの精度を誇っています。平綴じの雑誌の場合、スキャンするときにノド部分がどうしても歪んでしまうのですが、そこも大体読めています。
正しく変換できていないのは、O(オー)が○(丸)に、「Y」が「¥」になってしまっている点でしょうか。特に、横線に相当するものがないのに「Y」が「¥」とされてしまうのは、不可解な気がします。
しかし、トータルではやはり精度は高く、イメージ化は楽だと思われます。今回はダンプリストの検証はできませんでしたが、おそらく完璧に近い認識率を見せてくれるでしょう。

 
ということで、今回は3種類の字体をダンプリストも含めて「Program List OCR」で読ませてみましたが、どれもほとんどの部分は正しく読めており、このソフトの素晴らしさが改めてわかりました。字体によって多少の得手、不得手はあるようですが、今後のアップデートでさらに精度が高まるのを期待したいです。

  1. 詳細なレビューありがとうございます。
    数字が誤認識を起こしやすいのは認識しており(他に8と3など)その辺を改善した(つもり)のバージョン1.1.0をリリースしています。
    お使いいただければ幸いです。

  1. トラックバックはまだありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)