ポスティングの現場では、配布したスタッフがLINEのグループに写真を送ってきます。「〇〇マンション 120枚」といったメッセージと一緒に、建物の看板や投函の様子の写真が届きます。
これを1枚ずつ開いて、物件名と枚数を目で読んで、集計表に手で打ち込んでいました。1日で数百枚になることもあります。
この作業を自動化しました。ただ、単純に文字を読ませるだけでは足りませんでした。
最初の設計
やりたいことは単純です。
- LINEに写真とメッセージが投稿される
- 写真を文字認識にかけて、物件名と枚数を取り出す
- 集計表に記録する
LINEには、投稿を自動で受け取れる仕組み(Messaging API)があります。専用のアカウントをグループに入れておくと、投稿が届くたびに指定した場所へ内容が送られてきます。
そこから写真を取り出して、文字認識にかけて、スプレッドシートに書き込む。ここまでは素直に作れました。
文字認識だけでは足りなかった
問題は、写真に物件名が写っているとは限らないことでした。
投函口のアップだけの写真、エレベーターホールの写真、看板が逆光で読めない写真。文字認識に強いエンジンを使っても、そもそも文字が写っていないものは読めません。
そこで、写真の中身だけに頼るのをやめました。
手がかりを3つ組み合わせる
いま使っているのは、次の3つの組み合わせです。
- メッセージ本文 — スタッフが書いた「〇〇マンション 120枚」というテキスト
- 写真の中の文字 — 看板やチラシの宛名から読み取った文字
- 投稿の順番 — 写真は連続して送られるので、その並び順
3つ目が意外に効きました。スタッフは現場ごとにまとめて写真を送るので、投稿の順番がそのまま訪問した順番になります。物件名が書かれていない投稿でも、前後の投稿から「この写真はどの現場のものか」が絞り込めます。
実際にあった取り違え
一度、危ないところでした。
ある投稿に「ラ・ヴェール東陽台 261枚」と書かれていました。ところが、その写真をよく見ると、地図アプリのスクリーンショットに別の団地名が写っていたのです。
そのまま登録していたら、1つの物件に481枚(実際の戸数は230)が入り、もう1つの物件は0枚になるところでした。書かれていた物件名が単純に間違っていたのです。
ここから学んだのは、人が書いた物件名より、写真に写っている情報のほうが信用できる場合があるということです。いまは両方が食い違ったときに警告を出すようにしています。自動で決めつけず、人に確認を促す形です。
つまずいたところ
スクリーンショットの黒帯
スタッフが送ってくる写真には、スマホのスクリーンショットが混ざります。上下に黒い帯や操作バーが入っていて、そのまま文字認識にかけると余計な文字を拾います。
これは、行ごとの明るさを見て、暗い行が続く位置で切り取るという処理で自動的に取り除けました。写真の中央から上下に走査して、真っ暗な行が10行続いたらそこが境目、という単純な判定です。
同じ物件に別の呼び方がある
「〇〇ハイツ」「〇〇ハイツA棟」「〇〇ハイツ 1号棟」。同じ建物を、人によって違う書き方で送ってきます。
正規化のルールを書きましたが、完全には吸収できません。いまは、似ている名前が見つかったら候補として提示して、人が選ぶ形にしています。全自動にこだわらないほうが、結果的に早く正確になりました。
写真は後から追加される
これがいちばん厄介でした。集計を終えたあとに「さっき送り忘れてました」と追加の写真が来ます。
一度、9枚 → 5枚追加 → 2枚追加、と3回に分けて届いたことがあり、そのたびに割り当てをやり直しました。いまは追加があったら全体を計算し直す作りにしています。差分だけ足すと必ずずれます。
やってみて分かったこと
全部を自動にしようとしないほうがいい、というのが最大の学びでした。
読み取れなかったもの、食い違ったものを人に回す。それ以外は自動で流す。この線引きをはっきりさせたことで、精度も速さも安定しました。
「AIで完全自動化」を目指すと、例外処理が膨らんでかえって信用できないものになります。8割を自動で流して、2割を人が見るほうが、現場では確実に速いです。
現場からの報告や写真の集計でお困りでしたら、AI導入支援・業務効率化のページをご覧ください。似た仕組みは、点検報告・施工写真・検品記録などにも応用できます。