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機能が内蔵されており、無料で使えます。日本語の認識精度も比較的高いです。
手順
- Googleドライブにスキャン PDFをアップロード
- アップロードしたファイルを右クリック
- 「アプリで開く」→「Google ドキュメント」を選択
- 自動的に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機能があり、画像を貼り付けると自動的にテキストが認識されます。
- OneNoteに画像やPDFを挿入
- 画像を右クリック → 「画像からテキストをコピー」
- テキストがクリップボードにコピーされる
方法2: 有料のOCRサービス
Adobe Acrobat Pro
Adobe Acrobat Proには高精度なOCR機能が搭載されています。
| 項目 | 内容 |
|---|---|
| 月額 | 1,980円(税込) |
| 日本語精度 | 非常に高い |
| バッチ処理 | ○ |
| 検索可能PDF出力 | ○ |
手順
- Adobe AcrobatでスキャンPDFを開く
- 「ツール」→「スキャンとOCR」を選択
- 「テキスト認識」→「このファイル内」を選択
- 言語を「日本語」に設定
- 「テキストを認識」をクリック
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ツール をご活用ください。ブラウザ完結で安全に操作できます。