JA EN

画像からのテキスト抽出 - OCR 技術の仕組みと実装ガイド

· 約 9 分で読めます

OCR 技術の概要 - 画像からテキストを読み取る仕組み

OCR (Optical Character Recognition / 光学文字認識) は、画像内の文字を機械可読なテキストデータに変換する技術です。スキャンした書類のデジタル化、名刺の自動読み取り、街中の看板認識、手書きメモのテキスト化など、幅広い用途で活用されています。

OCR の処理パイプライン:

現代の OCR は大きく 2 つのアプローチに分かれます。従来型は各文字を個別に認識する「文字単位認識」で、Tesseract がこの代表です。最新の深層学習ベースは、テキスト行全体を一度に認識する「シーケンス認識」で、CRNN (Convolutional Recurrent Neural Network) + CTC (Connectionist Temporal Classification) が主流です。後者は文字分割が不要で、手書き文字や変形フォントへの対応力が格段に高くなっています。

Tesseract OCR - オープンソースの定番エンジン

Tesseract は Google がメンテナンスするオープンソース OCR エンジンで、100 以上の言語に対応しています。バージョン 4.0 以降は LSTM (Long Short-Term Memory) ベースの認識エンジンを搭載し、従来のパターンマッチング方式から大幅に精度が向上しました。

Tesseract の基本的な使い方:

Python からの利用 (pytesseract):

import pytesseract; from PIL import Image; text = pytesseract.image_to_string(Image.open('doc.png'), lang='jpn', config='--oem 1 --psm 6')

Tesseract の日本語認識精度は、印刷物のスキャン画像で 90-95% 程度です。ただし以下の条件で精度が大幅に低下します:

これらの制約を克服するには、適切な前処理と、必要に応じてクラウド API や深層学習モデルへの切り替えを検討してください。

深層学習ベースの OCR - CRNN と Transformer モデル

最新の OCR 技術は深層学習に基づいており、従来の文字単位認識を超えた高精度な認識を実現しています。特に CRNN (Convolutional Recurrent Neural Network) アーキテクチャと、近年台頭している Transformer ベースのモデルが主流です。

CRNN + CTC の仕組み:

Transformer ベースの最新モデル:

深層学習 OCR の精度比較 (日本語印刷文書、文字単位正解率):

前処理テクニック - OCR 精度を劇的に向上させる方法

OCR の認識精度は入力画像の品質に大きく依存します。適切な前処理を施すことで、認識率を 10-20 ポイント向上させることが可能です。以下に実践的な前処理テクニックを紹介します。

必須の前処理ステップ:

高度な前処理テクニック:

前処理の効果測定: 前処理なしの Tesseract で 78% だった認識率が、二値化 + ノイズ除去 + 傾き補正の組み合わせで 94% に向上した事例があります。前処理パイプラインは画像の種類ごとにチューニングが必要です。

クラウド OCR サービスの比較と使い分け

自前で OCR エンジンを構築・運用する代わりに、クラウド OCR サービスを利用する選択肢もあります。高精度な認識モデルがマネージドサービスとして提供され、インフラ管理なしで利用できます。

主要クラウド OCR サービス:

選定の指針:

ハイブリッドアプローチとして、まず Tesseract で処理し、信頼度スコアが低い (0.7 未満) 画像のみクラウド API にフォールバックする設計が、コストと精度のバランスに優れています。月間 10 万枚の処理で、全件クラウド API 利用時の 30-40% のコストに抑えられます。

実装パターン - OCR パイプラインの設計と運用

本番環境で OCR システムを運用する際の実装パターンと、精度を継続的に改善するための運用ノウハウを紹介します。

推奨アーキテクチャ (サーバーレス OCR パイプライン):

精度改善のための運用テクニック:

パフォーマンス指標: 文字単位正解率 (Character Accuracy) 95% 以上、単語単位正解率 (Word Accuracy) 90% 以上を目標とし、月次でモニタリングします。精度が閾値を下回った場合は、入力画像の品質変化や新しい文書タイプの追加を疑い、前処理パイプラインの調整を行います。

関連記事

PDF から画像を抽出する方法 - ツール別完全ガイド

PDF ファイルに埋め込まれた画像を劣化なしで抽出する方法を、コマンドラインツール、Python、オンラインツールなど手段別に解説します。

WebAssembly で高速画像処理を実現する - Wasm による画像変換とフィルタ適用

WebAssembly を活用したブラウザ内高速画像処理の実装方法を解説。Rust/C++ から Wasm へのコンパイル、Canvas API との連携、パフォーマンス比較を具体的なコード例で紹介します。

画像の自動タグ付け技術 - 物体検出、シーン認識、キャプション生成の仕組み

画像認識 AI による自動タグ付けの技術を解説。物体検出 (YOLO)、シーン認識、画像キャプション生成の仕組みと、Web アプリケーションへの実装方法を具体例とともに紹介します。

画像プレースホルダー技術の比較 - LQIP, BlurHash, SQIP の実装ガイド

画像読み込み中のユーザー体験を向上させる LQIP、BlurHash、SQIP の仕組みと実装方法を比較解説。各手法のメリット・デメリットと最適な使い分けを紹介します。

モルフォロジー演算の基礎 - 膨張・収縮・オープニング・クロージングの原理と実践

画像処理の基本操作であるモルフォロジー演算を体系的に解説。膨張、収縮、オープニング、クロージングの原理と構造要素の設計、実務での活用パターンを紹介します。

物体検出の概要 - YOLO、SSD、Faster R-CNN のアーキテクチャと性能比較

深層学習による物体検出技術を体系的に解説。YOLO、SSD、Faster R-CNN の原理と特性、速度・精度のトレードオフ、実務での選択基準を具体的なベンチマークとともに紹介します。

関連用語