4か国の実物レシートで ReceiptIQ を検証する方法
東京のレシート、台北のレシート、ボネール島のレシート、カルガリーのレシート。共通しているのは「合計」という言葉が4つの言語で書かれていることくらいです。バージョン 2.2.0 は、ReceiptIQ の読み取りパイプラインをリリース前に4か国の実物レシートで1枚ずつ検証した最初のリリースです。何が見つかり、何を直したかをまとめます。
レシートは国際標準ではない
ReceiptIQ はカナダで生まれ、長い間そのルールは暗黙のうちにカナダのレシートを前提にしていました。金額は 12.34 の形、合計行は TOTAL、税は下に加算される。そこへオランダ、ボネール、日本、台湾のユーザーが加わり、その前提はすべて崩れました。
- 日本と台湾のレシートには小数点がありません。
¥1,190、483、198TX。日本のレシートは内税を「内消費税」として情報行に印字し、「合計」という語は他の役割でも現れます。「合計点数」は点数、「合計P」はポイントです。 - オランダとボネールは小数点にカンマを使います。
16,50、Totaal € 54,68。ボネールではドル記号と数字の間にスペースが入ります。$ 55,00。 - 台湾は政府標準の電子発票(統一發票)で、発票番号・ランダムコード・QR コードが明細の上に並び、どれも金額ではありません。
どれも珍しいことではなく、その土地の紙がそういう形をしているだけです。それに対して検証したことのない読み取り機能は、開発者の目に触れない形で失敗します。
どう測るか
iPhone 上のアプリとまったく同じコードを動かす小さな検証装置を Mac 上に作りました。Apple の端末内文字認識、レシート上の位置から品名と金額を対応づける ReceiptIQ 独自の処理、「これはレシートか」の判定、そして値引き・価格のずれ・合計を補正する算術的な修正です。各レシートをこのパイプラインに通し、結果を実際の印字と比較します。
通したもの:
- 日本の実物レシート 1,148 枚。公開されたオープンライセンスの研究用データセットで、店舗や飲食店でスマートフォン撮影され、店名・日付・品目・税・合計が人手でラベル付けされています。
- マレーシアの実物レシート 973 枚。ICDAR 2019 の研究ベンチマークで、シンガポールとマレーシアのユーザーが読み取る形式です。
- 台湾の電子発票 40 枚。公開写真データセットがまだ存在しないため、公式レイアウトから生成しました。
- この夏サポートに寄せられたユーザーのレシート。主にカリブ海オランダ領のもので、現在は毎リリース前に回帰テストとして実行しています。
やっていないことが一つあります。この素材でモデルを学習させることです。ReceiptIQ の文字認識は Apple のもので、解析ルールは読んで検証できるコードです。データセットは1台の Mac から出ず、ユーザーから送られたレシートは非公開のままです。
検証で見つかったこと
| 項目 | 修正前 | 修正後 |
|---|---|---|
| 品目と金額が対応づけられた日本のレシート | 19% | 93% |
| レシートとして受理された台湾の電子発票 | 40枚中33枚 | 40枚中40枚 |
| 品目が対応づけられた台湾の電子発票 | 40枚中25枚 | 40枚中40枚 |
| 存在しない税の行が追加された日本のレシート(40枚中) | 12 | 4(この4枚は実際に外税) |
| カンマ小数の合計が正しく読めたオランダのレシート | 運次第 | すべて |
| 194枚のうち、合計補正が正しい合計を上書きした回数 | 18 | 0 |
最後の行がいちばん誇らしい結果です。ときどき正解を誤答に置き換える安全網は、安全網がないより悪い。それを書いたその晩に検証装置が捕まえました。
2.2.0 で変わったこと
- 円と新台湾ドルの金額が「金額」として認識され、品名と金額が対応づけられた状態で解析に渡ります。日本のレシートで明細がずれる最大の原因でした。
- 内税のレシートに存在しない消費税の品目が追加されなくなりました。「小計」を合計と取り違えず、「お預り」「お釣り」は支払いと釣り銭として読みます。
- カンマ小数と通貨記号の後のスペースを、レシート判定・対応づけ・合計補正のすべてで受け付けます。
- 日本語・繁体字中国語・オランダ語・スペイン語の合計・小計・支払い・値引きの語を認識し、購入品目として表示されなくなりました。
- それでも「レシートではありません」と拒否された場合、アラートから同意のうえで写真と認識テキストをサポートに送れます。次の検証セットに加えるためです。
次にやること
台湾の実物レシート写真、スペイン語のセット、そしてプリンターから出てきたレシートと同じくらいきれいな写真をこのパイプラインに渡すための撮影体験の改善です。まだ検証していない国でレシートを読み取っている方は、報告ボタンがあなたの形式を次の検証に載せるいちばん早い方法です。