Cats and Dogs

現像ノートSeason 4STIL.RECEIPT第 2 話 / 全 6 話

現像ノート

レシートは、名刺より読みにくい ── 表は、二行に分かれる

レシートの明細は、左に品名、右に金額が並びます。人の目には、ちゃんと一行に見える。でも、文字認識は、その品名と金額を、別々の断片として返してくることがありました。一行に見えていたものが、二行に分かれる ── このアプリで、いちばん手こずったのは、その「表」でした。

レシートは、名刺より読みにくい ── 表は、二行に分かれる

前回、レシートは名刺よりずっと読みにくい、と書きました。今日は、その正体の話です。感熱紙の薄い印字や、小さな文字も手強かったのですが、いちばん手こずったのは、明細の「表」でした。

数字が、品名と別の行で返ってくる

レシートの明細は、たいてい、左に品名、右に金額が並んでいます。「Insalata(サラダ)」と、その右に「¥1,300」。人の目には、これは一行です。

ところが、iPhone の文字認識は、ときどき、この「Insalata」と「¥1,300」を、別々の断片として返してきます。左の列と右の列を、それぞれ別の行として読んでしまう。紙の上では並んでいたものが、データになると、ばらばらにほどけてしまうのです。

だから、明細が崩れた

私の最初の作りは、「同じ行にある品名と金額を、ペアにする」という前提でできていました。だから、品名と金額が別の行で返ってくると、ペアが作れない。あるレストランのレシートでは、明細が、全部おかしくなりました。

AI に任せてみると、今度は、別の壊れ方をしました。存在しない数字を、作ってしまう。七件の明細が、全部「¥100・軽減税率 8%」になって返ってきたことがありました。実際には、Bresaola が ¥1,300、Insalata が ¥1,300 と、ちゃんと印刷されているのに。ばらけた断片を前に、AI は、それらしい数字で、隙間を埋めてしまっていました。

視覚的な行を、組み直す

直し方は、機械の都合ではなく、紙の上の「見え方」に立ち返ることでした。

文字認識が返してくる断片には、それぞれ、紙のどの高さにあったか、という位置の情報がついています。そこで、縦の位置が重なっている断片を、もう一度ひとつの行に束ね直すことにしました。「Insalata」と、その右で同じ高さにある「¥1,300」を、つなぐ。人の目が最初から一行として見ていたものを、座標の上で、もう一度、一行に戻す。私はこれを「視覚的な行の再構築」と呼んでいます。

全部、その上にのせ直した

AI も、ルールベースも、元の文章も、すべてこの束ね直した行の上で読むように変えました。読む対象を、ばらけた断片ではなく、組み直した一行にそろえたのです。

すると、明細が、ちゃんと一件ずつ立つようになりました。Insalata ¥1,300、Bresaola ¥1,300。バラバラだった断片が、もう一度、一行ぶんの意味を取り戻しました。

教わったのは、こういうことでした。機械が読みやすいように人が合わせるのではなく、人が見ていた通りに、機械の側を組み直す。レシートを読むというのは、文字を拾うことよりも、紙の上のレイアウトを、もう一度立ち上げることのほうに近かったのです。

次回

これで、表は読めるようになりました。けれど、数字には、まだ別の落とし穴がありました。AI もルールも、ときどき、税率や税額の数字を取り違える。次は、その取り違えを、数学で直した話をします。

STIL.RECEIPT は App Store で公開しています。

App Store で STIL.RECEIPT を入手