CLOVA OCRのReceipt OCR でいろんなレシートを読み取ってみた

蒸気屋の焼きドーナツはおいしいです。
2022.01.24

CLOVA OCR とは

CLOVA OCR は LINE 社が提供する帳票、名刺、レシートなどの画像データを読み取り、デジタル化する文字認識サービスです。

さまざまなデータを読み込むことができる CLOVA OCR ですが、請求書・レシート/領収書・本人確認書類・名刺は、それぞれに特化した AI を用いた OCR が用意されています。(2022 年 1 月現在)

参考: CLOVA OCR

本記事ではレシートの読み込みに特化した Receipt Basic OCR の検証環境を LINE 株式会社様よりご提供いただいたのでいろんなレシートを読み込んでみました。

やってみた

提供いただいた API エンドポイントに対応形式である JPEG、JPEG2000、PNG 形式でレシート画像をアップロードしてレスポンスを確認します。

レシート

まず普通にレシートを読み込んでみました。

結果:

{
  "result": {
    "storeInfo": {
      "complexMallName": "博多阪急",
      "name": "薩摩蒸気屋",
      "tel": "092-461-1381"
    },
    "items": [
      {
        "name": "博多焼どうなつ",
        "num": "0852-1578-00015S004",
        "count": 12,
        "priceInfo": {
          "price": 1104,
          "unitPrice": 92
        }
      }
    ],
    "subTotal": {
      "price": [1104],
      "tax": [88]
    },
    "totalPrice": {
      "price": 1192,
      "tax": 88,
      "count": 12
    },
    "paymentInfo": {
      "date": "2021-12-29",
      "time": "17:33:00",
      "changePrice": 0,
      "payment": [
        {
          "method": "PayPay",
          "price": 1192
        }
      ]
    }
  }
}

目でざっと確認したところ店舗名、日付、時間、商品名、単価、数、金額等の全ての項目が正常に読み込めました。

レシート:ぐちゃぐちゃ

同じレシートをぐちゃぐちゃにして読み取ってみました。よくポケットから出てくるやつですね。

結果:

{
  "result": {
    "storeInfo": {"complexMallName": "博多阪急", "name": "薩摩蒸気屋"},
    "items": [
      {
        "name": "博多焼どうなつ",
        "num": "0852-1578-00015S004",
        "count": 12,
        "priceInfo": {"price": 1104, "unitPrice": 2}
      }
    ],
    "subTotal": {"price": [1104], "tax": [88]},
    "totalPrice": {"price": 1192, "tax": 96, "count": 12},
    "paymentInfo": {
      "date": "2021-12-29",
      "time": "17:33:00",
      "changePrice": 13,
      "payment": [{"method": "PayPay", "price": 1191}]
    }
  }
}

単価、消費税、合計金額の値が正常に読み取れませんでした。シワになった部分が読み取れなかったようです。

レシート:複数

複数のレシートを一つの画像に含めたものを読み取ってみました。

結果:

{
  "result": {
    "storeInfo": {
      "name": "マルキョウ肉の事",
      "branch": "ならおまかせ雑餉隈店",
      "branchNum": "No00001",
      "address": "福岡市博多区銀天町1丁目2-11",
      "tel": "092-591-4122"
    },
    "items": [{"name": "無調整豆乳"}],
    "subTotal": {"price": [149], "tax": [11]},
    "totalPrice": {"price": 160, "count": 1},
    "paymentInfo": {
      "date": "2022-01-22",
      "time": "18:11:00",
      "changePrice": 0,
      "payment": [{"price": 160}, {"method": "現金", "price": 640}]
    }
  }
}

複数のレシートの読み込みには対応していないようです。

レシート:逆さま

結果:

{
  "result": {
    "storeInfo": {
      "name": "マル和ミート",
      "address": "福岡市博多区銀天町1丁目2-11"
    },
    "items": [
      {
        "name": "牛肉",
        "num": "00000001",
        "count": 199,
        "priceInfo": {"price": 593, "unitPrice": 298}
      }
    ],
    "subTotal": {"price": [593], "tax": [47]},
    "totalPrice": {"price": 640, "count": 1},
    "paymentInfo": {
      "date": "2022-01-22",
      "time": "18:16:00",
      "payment": [{"method": "現金", "price": 640}]
    }
  }
}

逆さまでも問題なく読み取ることができました。

レシート:角度悪め

結果:

{
  "result": {
    "storeInfo": {
      "complexMallName": "博多阪急",
      "name": "名庭摩蒸気屋",
      "tel": "092-419-5892"
    },
    "items": [
      {
        "name": "博多焼どうなつ",
        "num": "0852-1578-00015S004",
        "count": 12,
        "priceInfo": {"price": 1104, "unitPrice": 92}
      }
    ],
    "subTotal": {"price": [1104], "tax": [88]},
    "totalPrice": {"price": 1192, "tax": 88, "count": 12},
    "paymentInfo": {
      "date": "2021-12-29",
      "time": "17:33:00",
      "changePrice": 0,
      "payment": [{"method": "PayPay", "price": 1192}]
    }
  }
}

少々の傾きは問題ないようです。

レシート:折り目あり

結果:

{
  "result": {
    "storeInfo": {
      "name": "Seria",
      "branch": "大須店",
      "address": "愛知県名古屋市中区大須2-18-42",
      "tel": "052-265-7360"
    },
    "items": [
      {"name": "取っ手付きポリ25号乳白", "priceInfo": {"price": 100}},
      {"name": "パンパスグラスエリンジウムミニブ", "priceInfo": {"price": 100}},
      {"name": "プリザドライブーケコーンミックス", "priceInfo": {"price": 100}},
      {"name": "ディスプレイバーウッド", "priceInfo": {"price": 100}},
      {"name": "フォトガーランド90c", "priceInfo": {"price": 100}},
      {"name": "クッション保護シート3", "priceInfo": {"price": 100}}
    ],
    "subTotal": {"price": [600], "tax": [60, 60]},
    "totalPrice": {"price": 660, "count": 6},
    "paymentInfo": {
      "date": "2022-01-22",
      "time": "18:35:00",
      "changePrice": 0,
      "payment": [{"method": "QUICPay", "price": 660}]
    }
  }
}

折り目がついていても問題なく読み取りができました。

レシート:低画質

.
レシート画像提供:@hi34さん

結果:

{
  "result": {
    "storeInfo": {
      "branch": "所沢店",
      "branchNum": "0030192",
      "address": "埼玉県所沢市日吉町8-3三上ビル1F",
      "tel": "0429-26-4129"
    },
    "items": [
      {"name": "BC)"},
      {"name": "牛角コース", "priceInfo": {"price": 3480}},
      {
        "name": "飲み放題フ消塩",
        "priceInfo": {"price": 158},
        "subItems": [
          {"name": "おターチョコし用の氷"},
          {"name": "替上カルビステーキ"},
          {"name": "月見カルビ"},
          {"name": "替厚切りカルビタレ"},
          {"name": "皆とんタン塩"},
          {"name": "皆とんタン塩"},
          {"name": "替ロース(タレ)"},
          {"name": "替ロース(ダレ)"},
          {"name": "上ロースステーキ"},
          {"name": "ハハラミ(タレ)"}
        ]
      },
      {"name": "ゲロわび", "subItems": [{"name": "ートさ"}]},
      {"name": "替三元カビ(塩ダレ)", "subItems": [{"name": "ル"}]},
      {"name": "華やみつき塩キャベツ大", "priceInfo": {"price": 0}},
      {"name": "替やみつき塩キャベツ中"},
      {"name": "装のり", "priceInfo": {"price": 3}},
      {"name": "ジューシーソーセージ6"},
      {
        "name": "★にんにくのホイル焼き",
        "priceInfo": {"price": 0},
        "subItems": [{"name": "さつバター"}]
      },
      {"name": "替チョレギサラダ", "priceInfo": {"price": 0}},
      {
        "name": "替ごん中",
        "priceInfo": {"price": 0},
        "subItems": [{"name": "は"}]
      },
      {"name": "替ワカメスープ", "priceInfo": {"price": 0}},
      {"name": "替玉子スープ", "priceInfo": {"price": 0}},
      {"name": "()杏仁豆腐", "priceInfo": {"price": 0}},
      {"name": "牛アイスバニラ", "priceInfo": {"price": 0}},
      {"name": "ヒスーパードライ", "priceInfo": {"price": 0}},
      {"name": "カシスオレンジ", "priceInfo": {"price": 0}},
      {"name": "カシスグレープフルーツ", "priceInfo": {"price": 0}},
      {"name": "カルピスサワー", "priceInfo": {"price": 0}},
      {
        "name": "白桃カルピスサワー柚子カルピスサワーグリア!",
        "count": 1,
        "priceInfo": {"price": 0}
      },
      {"name": "ゴールデンパインジュース", "priceInfo": {"price": 0}},
      {"name": "リアルゴールドウーロン茶", "priceInfo": {"price": 0}},
      {"name": "情網焼きジンギスカン", "count": 3, "priceInfo": {"price": 0}},
      {"name": "WO", "priceInfo": {"price": 25300}}
    ],
    "subTotal": {"price": [2024], "tax": [27324]},
    "totalPrice": {"price": 27324},
    "paymentInfo": {
      "date": "2017-09-24",
      "time": "20:47:00",
      "changePrice": 0,
      "payment": [{"method": "クレシット"}]
    }
  }
}

画質によっては文字が読み取れないこともあるようです。

レシート:黄色

背景色が黄色いレシート

結果:

{
  "result": {
    "storeInfo": {
      "name": "/EON",
      "tel": "0940-38-5600"
    },
    "items": [
      {
        "name": "グリコプレミアム熱カレー",
        "count": 2,
        "priceInfo": {
          "price": 396,
          "unitPrice": 198
        }
      },
      {
        "name": "日清焼そばUFO",
        "count": 2,
        "priceInfo": {
          "price": 236,
          "unitPrice": 118
        }
      },
      {
        "name": "CCレモン",
        "count": 2,
        "priceInfo": {
          "price": 176,
          "unitPrice": 88
        }
      },
      {
        "name": "蜜りんごヨーグリーナ",
        "count": 2,
        "priceInfo": {
          "price": 156,
          "unitPrice": 78
        }
      },
      {
        "name": "ほろよいオレンジ",
        "count": 2,
        "priceInfo": {
          "price": 190,
          "unitPrice": 95
        }
      },
      {
        "name": "イオ有料レジ袋Lサイズ",
        "priceInfo": {
          "price": 3
        }
      }
    ],
    "subTotal": {
      "price": [1157],
      "tax": [77, 19]
    },
    "totalPrice": {
      "price": 1253,
      "count": 10
    },
    "paymentInfo": {
      "date": "2021-11-11",
      "time": "19:33:00",
      "changePrice": 0,
      "payment": [
        {
          "method": "iD支払",
          "price": 1253
        }
      ]
    }
  }
}

背景色が特殊なものもほぼ正確に読み取ることができました。

レシート:とても長い

とても長いレシート

結果:

{
  "result": {
    "storeInfo": {
      "name": "TRIAL",
      "branch": "桂川店",
      "branchNum": "No00468",
      "tel": "0948-20-2121"
    },
    "items": [
      {"name": "トPOS"},
      {"name": "絹とうふ", "priceInfo": {"price": 35}},
      {"name": "木綿豆腐", "priceInfo": {"price": 35}},
      {
        "name": "ブロッコリー",
        "count": 2,
        "priceInfo": {"price": 258, "unitPrice": 129}
      },
      {"name": "ベツ", "priceInfo": {"price": 99}},
      {"name": "にら", "priceInfo": {"price": 99}},
      {"name": "白葱", "priceInfo": {"price": 149}},
      {"name": "人参袋", "priceInfo": {"price": 129}},
      {
        "name": "TR蒸しちゃんぽん",
        "count": 3,
        "priceInfo": {"price": 57, "unitPrice": 19}
      },
      {"name": "カレー福神", "priceInfo": {"price": 149}},
      {"name": "串付きフランク", "priceInfo": {"price": 539, "discount": -270}},
      {
        "name": "上寿司(サーモン)18",
        "priceInfo": {"price": 1500, "discount": -750}
      },
      {
        "name": "寿司盛合せ24貫",
        "priceInfo": {"price": 1500, "discount": -750}
      },
      {
        "name": "こぼれ系おにぎり(焼き",
        "priceInfo": {"price": 179, "discount": -90}
      },
      {
        "name": "海賊おにぎり(鮭ツナマ",
        "priceInfo": {"price": 199, "discount": -100}
      },
      {"name": "毎日おいしい牛乳", "priceInfo": {"price": 179}},
      {"name": "豚挽肉(中)", "priceInfo": {"price": 439}},
      {
        "name": "マウントホイップケーキ",
        "count": 2,
        "priceInfo": {"price": 138, "unitPrice": 69}
      },
      {
        "name": "マウントホイップケーキ",
        "count": 2,
        "priceInfo": {"price": 138, "unitPrice": 69}
      },
      {"name": "とろける4種チーズのハ", "priceInfo": {"price": 400}},
      {"name": "御膳を彩る白たまご", "priceInfo": {"price": 219}},
      {"name": "明治スプレッタブル", "priceInfo": {"price": 379}},
      {"name": "さらさら緑茶", "priceInfo": {"price": 399}},
      {"name": "3食ナポリタン", "priceInfo": {"price": 159}},
      {"name": "創末シャンタンDELUXE", "priceInfo": {"price": 699}},
      {
        "name": "あさげ減塩",
        "count": 2,
        "priceInfo": {"price": 438, "unitPrice": 219}
      },
      {
        "name": "もつ鍋スープ醤油(ダイ",
        "count": 2,
        "priceInfo": {"price": 396, "unitPrice": 198}
      },
      {"name": "焼そばUFO大盛り", "priceInfo": {"price": 199}},
      {"name": "ガトーショコラ", "priceInfo": {"price": 199}},
      {"name": "大人の洋酒チョコレートショウ", "priceInfo": {"price": 249}}
    ],
    "subTotal": {"price": [7597], "tax": [562]},
    "totalPrice": {"price": 7597, "tax": 562, "count": 36},
    "paymentInfo": {
      "date": "2021-11-26",
      "time": "21:25:00",
      "payment": [
        {"method": "ポイント支払", "price": 70},
        {"method": "プリカ支払", "price": 7527}
      ]
    }
  }
}

品目名も精密に読み取ることができました。すごい・・・

最後に

使ってみたところあまり状態がよくないものもかなり精密にデータを取得することができました。

今回利用させていただいた CLOVA OCRのReceipt OCR は LINE アプリからも試すことができるので今すぐ試したいという方はぜひウォレットタブ > レシートからレシート登録を試してみてください。

料金形態や他の OCR の詳細を知りたい方は以下の公式ページからチェックしてみていただければと思います。