勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Python3.9系&Tesseractを用いて画像をOCR処理する方法

   2026/08/04  Python

以前にGASとDrive APIを組み合わせて画像をOCR処理する方法をメモしたが、これを自前のサーバかつ外部APIは使用せずに実装したい。また、ある程度のOCR処理精度も保ちたい。調べたところPHPでは厳しそうだがPythonだとライブラリが豊富で対応できそう。今回はTesseractを用いた対応方法をメモ。

 

環境について

テストした環境は以下の通り。

  • AlmaLinux8.6
  • Python 3.9.25

 

やりたいこと

以前も試した以下の画像をOCR処理し、画像内の文言を取得したい。

 

対応方法

Tesseractのインストール

サーバにSSH接続し以下コマンドを実行する。

#EPALをインストール
dnf install -y epel-release

#キャッシュを作成
dnf makecache

#Tesseractのパッケージの検索
dnf search tesseract-langpack

#Tesseractのパッケージのインストール
dnf install -y tesseract-langpack-jpn

#Python用のライブラリのインストール
python3.9 -m pip install pytesseract

cv2(OpenCV)のインストール

画像処理用にcv2(OpenCV)というライブラリも必要になるため以下コマンドを実行する。

#libGLのインストール
dnf install -y mesa-libGL

#opencv-pythonの軽量版をインストール
python3.9 -m pip install opencv-python-headless

#軽量版じゃない方をインストールする場合は以下
python3.9 -m pip install opencv-python

OCR処理用ファイル(ocr.py)

以下内容のファイルを適当なディレクトリにアップロードする。

import pytesseract
import cv2

#画像の読み込み
img = cv2.imread("test.jpg")

#小さい文字対策のため画像の拡大
img = cv2.resize(img, None, fx=2.0, fy=2.0, interpolation=cv2.INTER_LINEAR)

#前処理としてグレースケール化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#ノイズの除去
gray = cv2.GaussianBlur(gray, (3, 3), 0)

#二値化(OCR精度UP)
_, thresh = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY)

#OCRの実行
text = pytesseract.image_to_string(thresh, lang="jpn")

#出力
print(text)

プログラムの実行

サーバにSSH接続して以下コマンドを実行する。

python3 ocr.py

実行結果

私の環境だと以下が出力された。

GASとAdSense Management APIを使って前日
分の売り上げをメール通知する方法

 

 

 

 

Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの菅
理画面に見に行っていた。 これが面倒臭いのでGoogle Apps Scriptと
AdSense Management APIを組み合わせて昨日分のGoogleアドセンスの売
り上げをメールで受け取りたい。 以下に実装方法をメモ。

登録日時、更新日時、タグ部分は読み取れなかったのか空白(改行)となった。この辺りは画像拡大等、色々試したがどうにもできず。

ただ、それ以外の部分は正常にOCR処理できているように見受けられる。

 

その他

EasyOCRについて

EasyOCRという他のOCRライブラリも試してみたが、今回使用した画像の場合はTesseractの方が圧倒的に精度が高かった。

また、Tesseractの方が処理速度が圧倒的に速かった。

他に試したいこと

以下あたりも今後試してみたい。

  • 身分証画像から氏名部分をOCR処理する等、画像の指定した部分の文言を取得
  • PDFのOCR処理

 

所感

各種環境構築は面倒くさいものの自前のサーバかつ無料のライブラリで対応できるのはありがたい。場合によっては業務でも使っていけそう。

 - Python

  関連記事

AlmaLinux8系にPython3.9系をインストールしHello Worldを表示する方法
AlmaLinux8系にPython3.9系をインストールしHello Worldを表示する方法

WebARENA Indigo&AlmaLinux8.6の環境にPyth ...