OCRとは

OCR(Optical Character Recognition: 光学文字認識)は、画像内の文字を認識してテキストデータに変換する技術です。

OCRが必要なケース

  • スキャンしたPDF文書からテキストをコピーしたい
  • 紙の書類をデジタル化して検索可能にしたい
  • 手書きメモをテキスト化したい
  • 画像内の日本語テキストを抽出したい
  • 大量の紙文書をデジタルアーカイブしたい

テキストPDFとスキャンPDFの違い

種類テキスト選択検索ファイルサイズOCR必要
テキストPDF小さい×
スキャンPDF(画像PDF)××大きい

テキストPDFは、PDF作成時にテキスト情報が埋め込まれています。スキャンPDFは画像のみで構成されているため、テキストの選択や検索ができません。

OCRの精度に影響する要素

OCRの精度は入力画像の品質に大きく依存します。

精度を上げるポイント

要素推奨精度への影響
解像度300dpi以上非常に大きい
コントラスト白地に黒文字大きい
傾き水平に補正大きい
フォント明朝体・ゴシック体中程度
言語正しい言語を指定大きい
ノイズ少ないほど良い中程度

スキャン時の推奨設定

設定項目推奨値
解像度300〜600 dpi
カラーモードグレースケール or 白黒(文書の場合)
ファイル形式PDF or TIFF
自動傾き補正オン
原稿サイズ実際の用紙サイズに合わせる

方法1: 無料のOCRツール

Googleドライブ(おすすめ)

Google ドライブにはOCR機能が内蔵されており、無料で使えます。日本語の認識精度も比較的高いです。

手順

  1. Googleドライブにスキャン PDFをアップロード
  2. アップロードしたファイルを右クリック
  3. 「アプリで開く」→「Google ドキュメント」を選択
  4. 自動的にOCR処理が行われ、テキストが抽出される

特徴

  • 完全無料(Google アカウントが必要)
  • 日本語対応
  • 画像内のレイアウトもある程度再現
  • 15GBまでのストレージ

Tesseract OCR(オープンソース)

Googleが開発したオープンソースのOCRエンジンです。コマンドラインで動作します。

インストール

# macOS
brew install tesseract tesseract-lang

# Ubuntu
sudo apt install tesseract-ocr tesseract-ocr-jpn

# Windows(Chocolatey)
choco install tesseract

基本的な使い方

# 画像からテキスト抽出(日本語)
tesseract image.png output -l jpn

# PDFから画像を抽出してOCR
# まずPDFを画像に変換
pdftoppm document.pdf page -png

# 各ページにOCR処理
for f in page-*.png; do
  tesseract "$f" "${f%.png}" -l jpn
done

日本語の精度向上

# 日本語+英語の混在文書
tesseract image.png output -l jpn+eng

# PSM(Page Segmentation Mode)の指定
# 6: 均一なテキストブロック
tesseract image.png output -l jpn --psm 6

Microsoft OneNote

OneNoteにはOCR機能があり、画像を貼り付けると自動的にテキストが認識されます。

  1. OneNoteに画像やPDFを挿入
  2. 画像を右クリック → 「画像からテキストをコピー」
  3. テキストがクリップボードにコピーされる

方法2: 有料のOCRサービス

Adobe Acrobat Pro

Adobe Acrobat Proには高精度なOCR機能が搭載されています。

項目内容
月額1,980円(税込)
日本語精度非常に高い
バッチ処理
検索可能PDF出力

手順

  1. Adobe AcrobatでスキャンPDFを開く
  2. 「ツール」→「スキャンとOCR」を選択
  3. 「テキスト認識」→「このファイル内」を選択
  4. 言語を「日本語」に設定
  5. 「テキストを認識」をクリック

Google Cloud Vision API

プログラムからOCR処理を行う場合に最適です。

from google.cloud import vision

client = vision.ImageAnnotatorClient()

with open("document.png", "rb") as image_file:
    content = image_file.read()

image = vision.Image(content=content)
response = client.text_detection(image=image)
texts = response.text_annotations

print(texts[0].description)
項目内容
料金月1,000回まで無料、以降$1.50/1000回
日本語精度非常に高い
API利用REST / クライアントライブラリ
手書き対応

主要OCRサービスの比較

サービス料金日本語精度手書きバッチAPI
Googleドライブ無料××
Tesseract無料△〜○××
Adobe Acrobat有料×
Google Cloud Vision従量課金
Amazon Textract従量課金

方法3: PythonでOCR自動化

pdf2imageとTesseractの組み合わせ

from pdf2image import convert_from_path
import pytesseract

# PDFを画像に変換
images = convert_from_path("document.pdf", dpi=300)

# 各ページにOCR処理
full_text = ""
for i, image in enumerate(images):
    text = pytesseract.image_to_string(image, lang="jpn")
    full_text += f"--- ページ {i+1} ---\n{text}\n\n"

# 結果を保存
with open("output.txt", "w", encoding="utf-8") as f:
    f.write(full_text)

前処理で精度を上げる

from PIL import Image, ImageFilter, ImageEnhance

# 画像の前処理
image = Image.open("scan.png")

# グレースケール変換
image = image.convert("L")

# コントラスト強調
enhancer = ImageEnhance.Contrast(image)
image = enhancer.enhance(2.0)

# シャープネス
image = image.filter(ImageFilter.SHARPEN)

# 二値化
image = image.point(lambda x: 0 if x < 128 else 255)

# OCR処理
text = pytesseract.image_to_string(image, lang="jpn")

OCR後のテキスト校正

OCR処理後のテキストには認識誤りが含まれることがあります。よくある誤認識パターンを知っておくと校正が効率的です。

よくある誤認識パターン

正しい文字誤認識される文字原因
0(ゼロ)O(オー)形状が似ている
1(イチ)l(エル)、I(アイ)形状が似ている
ー(長音)一(漢数字の一)形状が似ている
画数が似ている
ロ(カタカナ)ほぼ同一形状

校正のヒント

  • スペルチェッカーや校正ツールを活用する
  • 固有名詞は手動で確認する
  • 数値データは特に注意して確認する
  • 原本と突き合わせて確認する

よくある質問

Q: 手書き文字もOCRできる?

Google Cloud Vision APIやApple の Live Text機能は手書き文字にも対応しています。ただし、印刷文字と比較すると精度は低くなります。丁寧に書かれた文字ほど精度が高くなります。

Q: OCR後のPDFを検索可能にできる?

はい。Adobe Acrobatやocrmypdfコマンドを使うと、スキャンPDFにOCR結果を透明テキストレイヤーとして追加し、検索可能なPDFを作成できます。

# ocrmypdfのインストール
pip install ocrmypdf

# 検索可能PDFの作成
ocrmypdf -l jpn input.pdf output.pdf

Q: 表(テーブル)のOCRは可能?

表の認識は通常のテキストOCRより難しいですが、Amazon TextractやGoogle Document AIは表構造の認識に対応しています。

まとめ

  • 手軽にOCR → Googleドライブ(無料・日本語対応)
  • 高精度 → Adobe Acrobat Pro or Google Cloud Vision
  • 大量処理・自動化 → Tesseract + Python
  • 検索可能PDF作成 → ocrmypdf

精度を上げるには、300dpi以上の解像度でスキャンし、傾きやノイズを事前に補正することが重要です。


OCR処理後のPDFの結合・分割・ページ整理には AssistyのPDFツール をご活用ください。ブラウザ完結で安全に操作できます。