Serdeのエンコーディングフォーマットとして紙のフォームが欲しい

欲しいもの

SerdeというRust界隈で人気なライブラリがある。ライブラリのユーザが定義するデータ型に対して、さまざまなエンコーディングフォーマットへのシリアライズその逆をシュッと定義する機能を提供する。エンコーディングフォーマットとしてはJSONやYAML文字列が一般的で、S式とかもどうせあるだろう。

そのようなエンコーディングフォーマットとして、紙面上のフォームを指定できたらとっても便利ではないだろうか。データ型を定義して、紙へのエンコーディングをシュッと定義できるということは、印刷に適したレンダリングのためのテンプレートをシュッと定義できるということである。反対に、そのようなフォームをスキャンすると、対応するデータ型の値を得るようなプログラムも一緒に出来上がる。

世の中ではDXのために紙をコンピュータで代替する流れがあるが、紙は軽く小さく安価である。この性質を上回るコンピュータが現れることはないだろう。そのような性質が求められるフィールドでは無理にコンピュータを使ってソフトウェアとインタラクトするよりも、紙のフォームに人が書き込み機械でそれをシームレスに読み込む方が人間に優しいと思う。例えば買い物メモのようなTODOリストはスマホなんて重いものよりも紙でもらえる方が嬉しいはずだ。メニュー表もそうである。トレーニングメニューもそう。運動する場にコンピュータを持ち込むという制約はなかなか嫌なものである。読書メモもそうなのではないか。日記もそうかも。問診票や投票用紙、葉書はそういう需要のある例ではあるが、フォーマット一つあたりにかけられるコストが大きいので僕が望むような仕組みがなくても手間暇かけてスペシャルな仕組みを作り込んでいるだろう。僕の欲しいものは、そこまでは頑張れないようなケースで便利に使えるものである。

紙は入力フォームとして優れていると思う。コンピュータとのインタラクションを紙を介して行えるようにするソフトウェアの実装コストがこれまではそこそこ高かったから、紙を使わないでコンピュータにどっぷり依存したインターフェースに甘んじるケースが多いのではなかろうか。さっと紙に印刷してそれを持って人間が仕事をする、その記録を紙に書き込む。コンピュータはそれを読み取って仕事を再開する。そういうインタラクションがもっと増えていいと思う。おそらく紙からの読み込み処理を実装するコストがそこそこあるためこの形式は流行っていない。ストレスフリーに読み込むためにはデバイスとスキャンのためのソフトウェアがいるし、それをソフトが望むフォーマットでパースする必要もある。スキャンまでは汎用的な製品があるが、パースはナイーブには画像解析が必要だし、画像をOCR処理したとて微妙な感じの文字列をどうするかが面倒である。そこで今回考えたような、紙面のフォームとデータ型定義の間の相互変換を汎用的なライブラリで提供することでその面倒なポイントを打倒したい。

Rustのライブラリというよりは、APIとして提供すると取り回しがいいだろう。データ型やアノテーションはJSONスキーマで十分だろうか。

既存サービス

Google Cloud Document AI / Amazon Textract というのがあるらしい。紙をスキャンしてそれをkey-valueデータとして得るサービスとGeminiが述べていた。データ定義からフォームを作る向きはやっていないらしい。

そのほかにもっともっと高価なサービスはDXツール見たいな感じになっていてデバイスとかまで含めたサービスになっていそう?まさにドンピシャで欲しいものはなさそうなので作るか...という感じ。どうせ生成AIで作ることになるのだが、うーむホスティング環境プロバイダとAIモデルプロバイダに渡す取り分のあとで、僕には利益が残るだろうか...。特に、既存サービスとの差別化ポイントはデコードだけでなくエンコードまで含める点の他には単に責務がシンプルなことであるから、付加価値をつけるのが難しいように思う。事業で金を産むというよりはOSSとして名声を得るために作るとか、そういうプロバイダ側に回ってAIやホスティング環境の利用を促進するためのキラーアプリ的な立場を狙うことで需要を獲得する(つまり継続的な運用と発展を望む雇用主をサービスが手に入れる)戦略になるだろう。Google Cloud Document AIのラッパーとして作るのが現実的に思える。この場合OSSとするのだろう。

このサービスは紙のフォームのレイアウトとデータ構造の定義、さらにスキャンしたユーザの画像とその抽出結果を処理(あるいは保持)することになる。画像と結果は必ずしも保持しなくて良いのだが、保持すると付加価値につながるかもしれない。精度改善とか?

僕の動機

ジムに行くときにメニューをAIに考えてもらって、それを携えて走ってジムまで行くようにしています。スマホは邪魔なので持っていきたくないが、メニューも記録も忘れてしまうのでメモとペンを持っていきます。メモにメニューを書くのも書いた記録をAIにダンプするのも面倒だし画像をそのまま渡すのもまた面倒です。なのでそのシリアライズ・デシリアライズをする仕事を汎用的に解決したい欲求を持っています。

解決されれば話はおしまいです。無料で使い放題だと嬉しいです。誰か作ってくれたら最高。僕の気が向いて手元のcodexが遊んでいたら作ろうと思います。