【要約】個人開発アプリにカメラで文字を読み取るOCR機能をつけた [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者が、個人開発アプリの利便性を向上させるために、画像から消費期限を自動入力する機能を実装しようとした際、以下の課題に直面した。
- ・認証情報の管理:Render等のPaaS環境では、Git管理外のJSON鍵ファイルを直接配置できない。
- ・OCRの精度不足:画像内のノイズやフォントの影響により、文字の読み取りが不完全になる。
- ・情報の特定困難:抽出された膨大なテキストの中から、目的とする「日付」のみを正確に判別する必要がある。
// Approach
開発者は、Google Cloud Vision APIの活用と、抽出後のテキストを解析する高度な後処理ロジックの実装によって課題を解決した。
- ・認証情報の運用:環境変数にJSONの中身を格納し、起動時に一時ファイルとして書き出す手法を採用した。
- ・テキスト抽出:
google-cloud-visiongemを用い、text_detectionメソッドで画像から文字を取得した。 - ・フィルタリング:キーワード(「消費」「賞味」)を含む行を優先的に探索するロジックを実装した。
- ・日付の特定:
\d{2}\.\d{1,2}\.\d{1,2}等の正規表現を用い、複数の日付形式に対応した。 - ・データの正規化:
Date.strptimeやDate.parseを使い、抽出した文字列をDate型へ変換した。
// Result
開発者は、画像から日付を抽出し、JSON形式で返すOCR機能の実装を完了させた。
- ・機能の実現:カメラで撮影した画像から、消費期限の候補を自動的に特定できる仕組みを構築した。
- ・精度の検証:パンの種類によって読み取り精度にばらつきが出ることを確認した。
- ・今後の展望:さらなる精度向上に向けた、ロジックの継続的な改良を目指している。
Senior Engineer Insight
> 個人開発としては非常に筋の良い実装である。特にPaaS環境での認証情報の扱いに関する知見は実践的だ。しかし、実戦投入には以下の観点が不足している。第一に、APIの呼び出しコスト管理だ。第二に、OCRの誤認識を前提としたUI/UX設計である。日付が誤って抽出された場合、ユーザーが即座に修正できるインターフェースが必須となる。ミッションクリティカルな現場では、この「人間による検証」のプロセスをシステム設計に組み込むべきである。