光学文字認識（こうがくもじにんしき）は、活字、手書きテキストの画像を文字コードの列に変換するソフトウェアである。画像はイメージスキャナーや写真で取り込まれた文書、風景写真（風景内の看板の文字など）、画像内の字幕（テレビ放送画像内など）が使われる。一般にOCRと略記される。

パスポート、請求書、銀行取引明細書、レシート、名刺、メール、データや文書の印刷物など、紙に記載されたデータをデータ入力する手法として広く使われ、紙に印刷された文書をデジタイズし、よりコンパクトな形で記録するのに必要とされる。さらに、文字コードに変換することでコグニティブコンピューティング、機械翻訳や音声合成の入力にも使えるようになり、テキストマイニングも可能となる。研究分野としては、パターン認識、人工知能、コンピュータビジョンが対応する。

初期のシステムは特定の書体を読むための「トレーニング」が必要であった（事前にその書体のサンプルを読ませることを意味する）。現在では、ほとんどの書体を高い識字率で変換することが可能である。いくつかのシステムでは読み込まれた画像からそれとほぼ同じになるようフォーマットされた出力（例えば、ワードプロセッサのファイルのようなもの）を生成することが可能であり、中には画像などの文書以外の部分が含まれていても正しく認識するものもある。

歴史 
光学文字認識の原点は、電信技術の拡張と視覚障害者が文字を読むための機械の開発という2つの問題にまつわる活動である。1914年は、文字列を読み取り電信符号に変換する機械を開発した。同じころはという携帯型スキャナを開発した。これを印刷物のページ上ですべらせると、文字の形状によって異なる音を発する。

ゴールドバーグはデータ入力手段としてOCR技術の開発を続けた。後に彼は、画像を光電管で読み取り、必要な識別パターンを含むテンプレートと比較することでマッチング対象を見つけるという技法を提案した。1929年、グスタフ・タウシェクも同様のアイデアを思いつき、ドイツでOCRに関する特許を取得した。アメリカでは1933年、ポール・W・ハンデルが同様のテンプレート・マッチング方式のOCR技術の特許を取得している。1935年、タウシェクもアメリカで特許を取得した。

1949年、米国復員軍人援護局から視覚障害者支援のためという要請を受け、RCAの技術者らが初期のコンピュータを使ったOCRを研究した。この研究には、単に活字をコンピュータ内の文字コードに変換するだけでなく、その文字を読み上げるという部分も含まれており、初期の音声合成の研究でもある。しかし、コストがかかりすぎることが判明し、研究は挫折した。

1950年、AFSA（アメリカ国家安全保障局の前身）の暗号解読者は、日本のパープル暗号を解読したことで知られるフランク・ロウレットの依頼により、ルイス・トーデラと共に局の手続きの自動化の勧告案作成に取り組んだ。その中には印刷された文書をコンピュータが処理できる形式に変換する問題も含まれていた。シェパードはそのようなことをする機械 "Gismo" を作成することを決め、友人のハーヴェイ・クックと共に自宅で夜や週末を利用して試作に取り組んだ。1953年、シェパードは特許を取得。Gismoは英語のアルファベットのうち23文字を読み取ることができ、モールス符号を理解し、楽譜を読みとることができ、活字のページを読み上げることができ、タイプされたページを読みとってプリンターで複製することができた。シェパードはその後  (IMR) を設立し、世界初のいくつかの商用OCRシステムを出荷した。Gismo も IMR のシステムも単純な文字マッチングではない画像解析をしていて、いくつかの書体を認識することができた。Gismo は画像中の文字の位置を正確に合わせる必要があったが、IMRシステムではスキャン領域のどこの文字であっても認識でき、実用に耐えるものであった。

最初の商用システムは1955年にリーダーズ・ダイジェスト社に納入され、販売報告書をコンピュータに入力するのに使われた。タイプされた報告書をパンチカードに変換し、それをコンピュータに入力するもので、年間1500万から2000万部を売り上げている同社の事務処理を効率化した。このシステムは後にスミソニアン博物館に無償で提供され展示されている。2台目のシステムはスタンダード・オイルがカリフォルニア州でクレジットカードの文字を読み取るために使い、他の石油会社もこれに追随した。IMRが1950年代後半に販売した他のシステムとしては電話会社の請求書読み取り装置やアメリカ空軍のテレタイプ用ページスキャナーなどがある。IBMなどは後にシェパードからOCR特許のライセンス供与を受けている。

1965年ごろ、リーダーズ・ダイジェストとRCAは、使われて戻ってきた同誌の広告についているクーポンのシリアル番号を読み取るOCR装置を共同で開発した。シリアル番号はRCAのプリンターでフォントにより印字されていて、この文字の読み取り装置は RCA 301 というコンピュータに直接接続された。この技術はトランス・ワールド航空（TWA）で航空チケットの読み取りにも使われることとなる。読み取り装置は毎分1,500枚の文書を処理でき、正しく読み取れなかった文書は弾かれる。RCAはこれを製品化し、保険会社などが採用した。

アメリカ合衆国郵便公社も1965年から発明家の開発した技術を元にしてOCRマシンを使っている。ヨーロッパでOCRを最初に採用したのはイギリスの郵便局だった。イギリスでは1965年、郵便貯金に相当するがOCRを使った自動化を行った。カナダの郵便局は1971年からOCRを使用している。OCRは受取人の名前と住所を読み取って番号順に並べかえるために使われる。そして郵便番号に基づいたバーコードを封筒に印刷する。その後手紙はバーコードにしたがって細かく並べかえる。バーコードが宛名とかぶる可能性があるため（基本的に宛名や住所はどこに書いても良い）、バーコードは紫外線ライトで見える特殊なインクを使用している。このインクは通常の光ではオレンジ色に見える。

なお、日本では漢字の読み取りが難しいため、1968年7月1日に郵便番号が導入され、手書きの数字である郵便番号をOCRシステムで読み取って並べかえていた。1998年に郵便番号の7桁化がなされてからはOCRで読み取った際にアメリカのようにバーコード（ただし、こちらは可視光では無色なインクを使用）を印刷するようになった。

視覚障害者向けの活用 
1974年、レイ・カーツワイルはあらゆる書体を読み取れるOCRの開発を行う Kurzweil Computer Products, Inc. を創業。カーツワイルは、音声合成技術と組合わせればこの技術が視覚障害者にとって最も役立つと考えた。鍵となる技術はCCDイメージスキャナと音声合成である。1976年1月13日、製品の完成披露が行われた。1978年、カーツワイルはOCRソフトウェアの販売を開始。最初の顧客はレクシスネクシスで、ニュースなどの文書をデータベースに入力するのに使った。2年後、カーツワイルは会社をゼロックスに売却。後にゼロックスはその部門を Scansoft としてスピンオフさせ、Scansoft はと合併した。

2000年代には、OCRはクラウドコンピューティング環境でサービスとしてオンラインで利用可能 (WebOCR) になり、外国語の看板のリアルタイム翻訳のように、スマートフォン上のモバイルアプリケーションで利用できるようになった。スマートフォンやスマートグラスの出現により、OCRは、デバイスのカメラを使用してキャプチャされたテキストを抽出するインターネット接続モバイルデバイスアプリケーションで使用されるようになった。オペレーティング システムに OCR 機能が組み込まれていないこれらのデバイスは、通常、OCR API を使用して、デバイスによってキャプチャおよび提供されるイメージ ファイルからテキストを抽出する。OCR APIは、抽出されたテキストを、元の画像で検出されたテキストの位置に関する情報とともに、デバイスアプリに戻して、テキスト読み上げなどの処理や表示に利用する。

ラテン語、キリル文字、アラビア語、ヘブライ語、ヒンディー語、ベンガル語、デーヴァナーガリー、タミル語、中国語、韓国語（ハングル）そして日本語など、多くの言語で、さまざまな商用およびオープンソースのOCRシステムが利用可能である。

応用分野 
OCR エンジンは、領収書 OCR、請求書 OCR、小切手 OCR、法定請求伝票 OCR など、分野固有の さまざまなOCR アプリケーション向けに開発されている。

応用分野の例は以下の通り。

 ビジネス文書のデータ入力（小切手、パスポート、請求書、銀行報告書、領収書など）
 自動車ナンバー自動読取装置（Nシステム）
 空港における、パスポートの認識と情報抽出
 自動保険書類主要情報抽出
 交通標識認識システム
 名刺情報から連絡先情報の抽出
 印刷された文書のテキスト版をより迅速に作成（例:プロジェクト・グーテンベルクの書籍スキャン）
 印刷された文書の電子画像を検索可能にする（例:Googleブックス）
 リアルタイムで手書き文字を認識（ペンコンピューティング）
 CAPTCHAアンチボットシステムの突破。このシステムはOCRを防ぐための特別な設計が施されている。CAPTCHAアンチボットシステムの堅牢性のテストにも用いられる。
 視覚障害者の支援技術
 リアルタイムで変化する車両設計に適したCAD画像をデータベース内で識別することで、車両に指示する
 スキャンした文書をサーチャブルPDF に変換して検索可能にする
 印刷された楽譜を読み取る楽譜OCR
 デスクトップからスクリーンショットで切り出した画像の文字認識を行うSpotOCR

種類 
光学式文字認識 (OCR)
活字テキストを対象とする。一度に 1 つのグリフまたは文字を入力する。
光学式単語認識
活字テキストを対象とする。単語の区切りとしてスペースを使用する言語について、一度に 1 単語ずつ入力する。これも通常は単にOCRと呼ばれる。
インテリジェント文字認識 (ICR)
手書き文字や筆記体のテキストを対象とする。一度に 1 つのグリフまたは文字を入力する。機械学習の技術を用いることが多い。
インテリジェント単語認識 (IWR)
手書き文字や筆記体のテキストを対象とする。一度に 1 単語ずつ入力する。これは、筆記体でグリフが分解できない言語で特に有効である。

OCR は通常、静的文書をオフラインで分析するプロセスである。オンライン OCR API サービスを提供するクラウド ベースのサービスも利用可能である。単にグリフや単語の形の分析だけでなく、文字の部位が描かれる順序、方向、ペンを下ろして持ち上げるパターンなどの動きを捉える筆順分析は、手書き文字認識へ追加情報として使うことで、認識をより正確に行うことができる。この技術は「インライン文字認識」「動的文字認識」「リアルタイム文字認識」および「インテリジェント文字認識」とも呼ばれている。

技術

事前処理
OCRソフトウェアは、多くの場合、認識率を高めるために画像を「事前処理」する。使われている技術は次の通りである。
傾き補正
スキャン時にドキュメントが正しく整列していない場合、テキストの行を完全に水平または垂直にするために、文書を時計回りまたは反時計回りに数度傾ける。
スペックル除去
白黒の斑点を除去して輪郭を平滑化する。
二値化
画像をカラーやグレースケールから白黒のバイナリイメージに変換する。二値化のタスクは、取り出したいテキストや画像を背景から分離する簡単な方法である。ほとんどの商用認識アルゴリズムは、バイナリイメージに対してのみ機能するため、二値化のタスクは必須である。また、二値化作業の結果は、文字認識段階の質に大きく影響するため、特定の入力画像タイプに対して採用する二値化手法の選択は慎重に行う必要がある。
罫線の削除
グリフ以外の罫線や線を消去する。
レイアウト解析、ゾーニング
列、段落、脚注などを個別のブロックとして識別する。段組みと表を持つレイアウトで特に重要である。
行と単語の検出
単語と文字の図形のベースラインを確立し、必要に応じて単語を区切る。
スクリプト認識
多言語文書では、スクリプトは単語のレベルで変更される可能性があるため、特定のスクリプトを処理するために適切な OCR を呼び出す前にスクリプトの識別が必要となる。
文字の分離、セグメンテーション
文字毎に認識するOCR の場合、ひとつに繋がった複数の文字を分離し、切り離されているが複数で一つの文字になる要素は結合する必要がある。
縦横比と縮尺の正規化
等幅フォントのセグメンテーションは、垂直グリッド線が黒い領域と交差する頻度が最も低い場所に基づいて、画像を均一なグリッドに揃えることによって、比較的単純に実現される。プロポーショナルフォントでは、文字間の空白文字が単語間の空白文字よりも大きくなる場合があり、垂直線が複数の文字と交差する場合があるため、より高度な手法が必要になる。

テキスト認識
中核となる OCR アルゴリズムには以下の 2 つの基本的な種類があり、候補文字のランク付けされたリストを生成する。

マトリックスマッチング
画像をピクセル単位で格納されたグリフと比較する。"パターンマッチング"、"パターン認識"、"デジタル画像相関"ともいわれる技術である。これは、入力グリフがイメージの残りの部分から正しく分離されていることと、格納されているグリフが同じフォントで同じスケールであることに依存する。この方法は、同一活字を入力すると最適に機能し、途中で新しいフォントが出てくる場合はうまく機能しない。これは、初期の物理写真セルベースのOCRが実装した技術である。
特徴検出
グリフが線分、閉じたループ、線の方向、線の交差などの “フィーチャ（特徴）” に分解される。検出機能は、表現の次元性を低下させ、認識プロセスを計算上効率的にする。これらのフィーチャは、文字の抽象的なベクトルのような表現と比較され、1つ以上のグリフプロトタイプに縮小される。コンピュータビジョンにおける特徴検出の一般的なテクニックは、一般的にインテリジェント手書き文字認識と実際に最も近代的なOCRソフトウェアで使われる。k近傍アルゴリズムなどの最も近い近隣分類子は、画像フィーチャと格納されているグリフフィーチャを比較し、最も近い一致を選択する。

CuneiformやTesseractなどのソフトウェアは、文字認識に2パス法を使用する。2番目のパスは「適応認識」と呼ばれ、最初のパスで高い信頼を得て認識された文字形状を使用して、2番目のパスの残りの文字をより良く認識する。これは、特殊なフォントやフォントが歪んでいる（例えば、ぼやけた、またはフェードされている）低品質でスキャンされた画像に有利である。

OCRopus や Tesseractのような最近の OCR ソフトウェアは、単一の文字に焦点を当てるのではなく、テキストの行全体を認識するように訓練されたニューラルネットワークを使用する。

反復 OCR と呼ばれる新しい手法では、ページ レイアウトに基づいて文書を自動的にセクションに切り取る。OCR は、ページレベルの OCR 精度を最大化するために、可変文字信頼レベルのしきい値を使用してセクションに対して個別に実行される。

OCR の結果は、標準化されたALTO形式、米国議会図書館によって管理される専用の XML スキーマで格納される。その他の一般的な形式は、hOCR と PAGE XML である。

事後処理
出力結果の中にレキシコン（文書で使用されている単語リスト）で定義されている単語しかないことが分かっている場合、OCR の精度を高めることができる。単語リストには、例えば、英語のすべての単語、または特定の分野のより技術的な語彙を定義しておくことができる。この手法は、文書に語彙にない単語（固有名詞など）が含まれている場合は利用に課題が生じる。Tesseract は、自前の辞書を使って、文字をセグメンテーションするステップの精度を向上させている。

基本的な出力結果はプレーンテキストであるが、より高度な OCR システムでは、ページの元のレイアウトを保持し、ページの元の画像と検索可能なテキスト表現の両方を含む注釈付きの PDF が生成される。

"近傍分析" は、特定の単語が一緒に使われる性質を利用して、エラーを修正する。例えば、英語では「Washington, D.C.」の組み合わせは、「Washington DOC」よりもるかに一般的である。

たとえば、単語が動詞か名詞かなど、スキャンされる言語の文法に関する知識を実装することで、より高い精度を可能にする。

レーベンシュタイン距離アルゴリズムは、OCR API からの結果をさらに最適化するために OCR の事後処理でも使用されている。

アプリケーション固有の最適化
主要な OCR エンジンメーカーは、特定の種類の入力をより効率的に処理できるように OCR システムを実装している。アプリケーション固有の語彙以外にも、ビジネス・ルール、標準表現、カラー画像に含まれる情報などを利用して、精度を向上させることができる。この戦略は「アプリケーション指向OCR」または「カスタマイズされたOCR」と呼ばれ、ナンバープレート、請求書、スクリーンショット、IDカード、運転免許証、自動車製造業のOCRに利用されている。

ニューヨークタイムズは、ドキュメントヘルパーと呼ばれる、ニュース部門がレビューする文書の処理を加速させるための独自のツールにOCR技術を採用した。これを利用することで、記者は1時間あたり5,400ページの確認が可能になったという。

回避策
OCRアルゴリズムを改良する以外の方法で、文字認識の問題を解決するためのいくつかのテクニックを紹介する。

高精度の入力を強制する
、、またはMICRフォントのような特殊なフォントは、正確に指定されたサイズ、間隔、および独特な文字形状を有し、郵便番号や銀行小切手処理の高精度での読み取りを可能にする。しかし、いくつかの有名なOCRエンジンは、ArialやTimes New Romanなどの一般的なフォントは認識できるが、OCR用途のこれらのフォントのテキストを認識できない。Google Tesseractは、新しいフォントを認識する訓練により、OCR-A、OCR-B、MICRフォントを認識することができるようになる。

帳票の中で、ボックスごとに1つのグリフを書くように罫線を事前に印刷する方法もある。罫線は、OCRシステムで簡単に除去できるドロップアウトカラーで印刷されることが多い。

Palm OSでは、手書き入力時に「Graffiti」と呼ばれる特殊なグリフセットを使用していた。これは印刷された英語の文字に似ているが、能力が制限されたハードウェアで認識しやすくするためにグリフが調整されていた。ユーザーはこれらの特殊なグリフを書く方法を学ぶ必要があった。

ゾーンベースのOCRは、画像を文書の特定の部分に制限する。これは、多くの場合、「テンプレートOCR」と呼ばれる。

クラウドソーシング
クラウドソーシングを活用して人間に文字認識をさせることで、コンピュータによるOCRと同じように迅速な処理を行いつつ、コンピュータ処理よりも精度を上げることができる。実用的なシステムには、Amazon Mechanical Turk やreCAPTCHAが挙げられる。フィンランド国立図書館は、標準化されたALTO形式で、コンピュータでOCRされたテキストを人間が修正するためのオンラインインターフェイスを開発した。クラウドソーシングは、文字認識を直接行うのではなく、ソフトウェア開発者に画像処理アルゴリズムの開発を依頼するためにも活用されている。

認識精度 

1990年代中ごろ、アメリカ合衆国エネルギー省 (DOE) は情報科学研究所 (ISRI) に印刷文書の認識技術育成という使命を与えた。それにより5年間に渡って Annual Test of OCR Accuracy がまとめられた。

ラテン文字の活字文書の正確な認識はほとんど解決済みの問題だが、識字率（文字を正しく認識する確率）は100％ではなく、間違いの許されない状況では人間が結果を確認する必要がある。19世紀および20世紀初頭の新聞を使った研究によると、単純に文字単位で認識する市販のOCRソフトウェアの識字率は71%から98%だった。手書き文字、特に筆記体の手書き文字認識や文字数の多い言語の文字認識ではまだ研究の余地がある。

文字認識の精度はいくつかの測定法で表され、実際に使用した測定法によって精度は大きく左右される。例えば、文脈や辞書を使わずに純粋に文字単位で認識する場合、識字率が99%であっても、単語ベースの誤り率は5%となるかもしれない。

光学文字認識と混同される機能にオンライン文字認識がある（手書き文字認識参照）。OCRは基本的にオフラインの文字認識であり、純粋に文字の静的な形状を認識する。一方オンライン文字認識は、文字が書かれる動的な過程を認識する。例えば、PenPoint OS やタブレットコンピュータなどがジェスチャーを認識するのもオンライン認識の一種であり、ペンがどういう方向にどれだけ動いたかを認識する。

手書き文字認識システムは近年、商用で成功している分野である。この技術はPalm OSなどが動作する携帯情報端末で入力手段として採用された。Apple Newtonがこの技術の先駆者である。これらの機器では筆順や速度や線の方向が入力時に分かるので比較的認識が容易である。また、ユーザー側も徐々に認識されやすい文字を書くようにトレーニングされるという面もある。一方、紙に書かれた手書き文字を認識するソフトウェアには上記の利点が無いため、識字率はいまだ十分とは言えない。きれいに書かれた手書き文字でも識字率は80%から90%であり、1ページにつき数十個の認識不能文字が出現することになる。これは非常に限られた分野でしか実用化できないレベルである。

筆記体文書の認識は研究が盛んであるが、識字率はさらに低い。筆記体の文字認識の識字率を高めるには、文脈や文法の情報を使わなければならない。例えば、辞書の単語を認識するのは、手書き原稿の個々の文字を認識するよりも簡単である。小切手に書かれた数字の列は小さな辞書を使えばよいので識字率を上げることができる。スキャンしている文書の言語の文法に関する知識があれば、単語が名詞なのか動詞なのかを判別することが可能となり識字率を上げることができる。手書き文字の形だけでは正確な認識（一般に98%以上）は不可能といってよい。