【要約】写真フォルダを丸ごとExcelに|OCR+QRを一括読み取りするWindowsツールを作った [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
現場の作業員が、名刺や領収書、在庫ラベルなどの写真から情報を手入力する際、膨大な時間と誤入力のリスクに直面している。作業の効率化を阻む要因は以下の通りである。
- ・手作業による入力コスト:100枚の画像を手入力する場合、約5時間の単純作業を要する。
- ・QRコードの読み取り負荷:目視での判別が困難であり、スマホでの個別スキャンは枚数が増えると非現実的である。
- ・セキュリティの制約:クラウドAPIを利用する場合、社外秘情報の漏洩リスクが懸念される。
// Approach
開発者は、追加の環境構築を不要としつつ、精度と速度を両立させるハイブリッドな手法を採用した。解決策の詳細は以下の通りである。
- ・OCRの二段構え:高速なWinSDK方式と、Snipping ToolをPythonで自動操作する高精度RPA方式を実装。
- ・QRコードの高度な処理:zxing-cppを採用し、向き多数決と行クラスタリングにより、バラバラな向きのQRを整列。
- ・配布設計の最適化:uvとバッチファイルを用い、アンチウイルス誤検知を避けるため.exe化を回避。
- ・堅牢性の確保:日本語パス問題への対策(cv2.imdecode)や、エラー時のレジューム機能を実装。
// Result
ユーザーはフォルダを選択するだけで、大量の画像データを検索可能なExcelやJSONへ自動変換できる。導入により以下の成果が得られる。
- ・作業効率の向上:手入力作業を劇的に削減し、入力ミスのリスクを排除する。
- ・安全な運用:オフライン処理により、社内規定の厳しい環境でも機密情報を保護したまま利用可能。
- ・開発資産の提供:エンジニア向けに、再利用可能なRPAコードやソースコードが提供される。
Senior Engineer Insight
> 実用性を極めて重視した設計である。特に、配布時の「.exe化による誤検知」や「日本語パスでのクラッシュ」といった、Windows環境特有の泥臭い罠を回避している点に、現場を知る者の視点を感じる。ただし、RPA方式は実行中にPCの操作を制限するため、大規模なバッチ処理としてのスケーラビリティには限界がある。ツールとしての完成度は高く、社内ツールのベースコードとして極めて有用である。