はじめに
紙の請求書や申込書、アンケート回答などを人力でExcelに入力していませんか?
実はPythonとOCR(光学文字認識)を組み合わせることで、紙資料をスキャンしてテキスト化し、自動でExcelに変換する仕組みを構築できます。
この記事では、
- OCRの基本仕組み
- Python × OCRライブラリの使い方(Tesseract)
- Excel自動出力までのコード例
を解説します。
OCR(光学文字認識)とは?
OCR(Optical Character Recognition)は、画像内の文字を解析しテキストデータに変換する技術です。
スキャンした書類やPDFを「読めるテキスト」に変換できるため、業務効率化に直結します。
代表的なPythonで使えるOCRツールは以下です
- pytesseract:GoogleのTesseract OCRエンジンをPythonから利用可能
- easyocr:ディープラーニングベースで認識精度が高い
今回はpytesseractを利用して、シンプルに構築していきます。
Python環境の準備
まず、必要なライブラリをインストールします。
pip install pytesseract pillow openpyxl
さらに、Tesseract OCR 本体をインストールする必要があります。
- Windows: Tesseract OCR公式からインストール
- Mac:
brew install tesseract
- Linux:
sudo apt install tesseract-ocr
OCRで文字を抽出するコード例
紙資料をスキャンした画像(例:document.png
)からテキストを抽出します。
from PIL import Image
import pytesseract
# 画像を読み込み
img = Image.open("document.png")
# OCR処理(日本語対応)
text = pytesseract.image_to_string(img, lang="jpn")
print(text)
これでスキャン画像から文字が抽出されます。
領収書や請求書の金額、日付、取引先名なども取得可能です。
OCR結果をExcelに自動変換
次に、抽出した文字列をExcelに書き込むサンプルです。
import openpyxl
# OCRで取得したテキスト
text = """
日付: 2025-08-31
取引先: 株式会社サンプル
金額: 120,000円
"""
# Excelブック作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "OCR結果"
# テキストを行ごとにExcelへ書き込み
for i, line in enumerate(text.strip().split("\n"), start=1):
ws.cell(row=i, column=1, value=line)
# 保存
wb.save("ocr_result.xlsx")
これでOCR結果がそのままExcelに保存されます。
フォーマットを整える(実務向け応用)
実務で使う場合、「項目ごとにセルに格納」できるように正規表現を使います。
import re
# 正規表現でデータ抽出
date = re.search(r"日付:\s*(.+)", text).group(1)
company = re.search(r"取引先:\s*(.+)", text).group(1)
amount = re.search(r"金額:\s*(.+)", text).group(1)
# Excelに整形して出力
ws["A1"] = "日付"
ws["B1"] = "取引先"
ws["C1"] = "金額"
ws.append([date, company, amount])
wb.save("ocr_result.xlsx")
こうすることで、日付・取引先・金額がExcelの各列に整理された形で保存されます。
まとめ
この記事では、
- PythonでOCR処理(pytesseract)
- 文字をExcelに自動変換(openpyxl)
- 正規表現で整形し、実務で使える形に
という流れを解説しました。
これを応用すれば、
- 請求書の入力作業をゼロに
- アンケート結果を自動集計
- 紙ベース業務の完全デジタル化
が実現できます。
👉 次のステップとしては、
- PDF一括処理
- 複数フォルダの自動監視
- OCR結果をデータベース連携
に拡張していくとさらに実務向けに進化します。