見出し画像

pythonで、画像ファイルから文字を認識してテキスト化する手順をChatGPTに教えてもらった

画像ファイルから文字抽出する機能を作成した際に、まずはpytesseractをセットアップしましたが、その設定手順についてもChatGPTに教えてもらいました。
設定中に所々でエラーが発生しましたが、そんな時もエラーメッセージをそのままChatGPTに投げれば解決法を教えてもらえるので、だいぶ助かりました!

以前に、pytesseractを使用して、画像から文字抽出した記事

1. pythonで、画像ファイルから文字を認識してテキスト化するpytesseractの設定手順

ChatGPTへのプロンプトまで記載すると、膨大になってしまうので、セットアップ関連の箇所のみを抜粋しまとめました。

1-1. pytesseract、Pillowのインストール

写真ファイルから文字を認識してテキスト化するためには、pytesseract というライブラリを使用する方法があります。pytesseract はGoogleのOCRエンジンであるTesseractをPythonから利用できるようにしたライブラリです。

まずは pytesseract と画像処理ライブラリの Pillow をインストールします。

pip install pytesseract
pip install Pillow

1-2. Tesseractのインストール

Tesseractのインストール

まず、Tesseractをインストールする必要があります。以下の手順でインストールします。

sudo apt-get install tesseract-ocr

1-3. Tesseractのパス設定

Tesseractのパス設定

Tesseractが正しくインストールされたら、settings.py ファイルで TESSERACT_CMD を設定してパスを指定します。以下のように設定します。


TESSERACT_CMD = '/usr/bin/tesseract'

上記のように、TESSERACT_CMD には実際の tesseract コマンドのパスを指定します。これにより、pytesseract はTesseractを呼び出して画像から文字を認識することができます。どのOSを使っているかに応じて、適切なパスを設定してください。

1-4. Tesseractの日本語言語データのインストール

Tesseractの日本語言語データのインストール

まず、Tesseractに日本語の言語データ jpn.traineddata をインストールします。

sudo apt-get install tesseract-ocr-jpn

1-5. TESSDATA_PREFIXの設定

TESSDATA_PREFIXの設定

Tesseractが日本語の言語データを正しく読み込むためには、TESSDATA_PREFIX 環境変数を設定する必要があります。通常は /usr/share/tesseract-ocr/ 以下に tessdata フォルダがあります。

以下の手順で環境変数を設定します。

export TESSDATA_PREFIX=/usr/share/tesseract-ocr/

Djangoの設定
Djangoの settings.py ファイルで TESSDATA_PREFIX を設定することもできます。

# settings.py

TESSDATA_PREFIX = '/usr/share/tesseract-ocr/'

2. 学習データを変える

最後はおまけで、実施しなくても良く、読み取る文字の形状を微調整したい場合など適宜実施する形で。

 tesseractの配置場所を調べる

find / -type d -name "*tesseract*" 2>/dev/null | grep -v "Permission denied"
/usr/share/doc/tesseract-ocr-osd
/usr/share/doc/libtesseract4
/usr/share/doc/tesseract-ocr-eng
/usr/share/doc/tesseract-ocr-jpn
/usr/share/doc/tesseract-ocr
/usr/share/tesseract-ocr
/opt/bitnami/python/lib/python3.11/site-packages/pytesseract
/opt/bitnami/python/lib/python3.11/site-packages/pytesseract-0.3.10.dist-info

学習データのディレクトリの内容を確認する

/usr/share/tesseract-ocr/4.00/tessdata$ ls -ltr
total 16764
-rw-r--r-- 1 root root  4113088 Sep 15  2017 eng.traineddata
-rw-r--r-- 1 root root 10562727 Sep 15  2017 osd.traineddata
-rw-r--r-- 1 root root  2471260 Feb 21  2018 jpn.traineddata
-rw-r--r-- 1 root root      572 Feb  4  2021 pdf.ttf
drwxr-xr-x 2 root root     4096 Apr 23 01:12 tessconfigs
drwxr-xr-x 2 root root     4096 Apr 23 01:12 configs

元々存在していた学習データファイルをバックアップ

sudo mv jpn.traineddata jpn.traineddata.org.20240515

学習データをgithubから取得する

sudo wget https://github.com/tesseract-ocr/tessdata_best/raw/main/jpn.traineddata -P /usr/share/tesseract-ocr/4.00/tessdata/
sudo wget https://github.com/tesseract-ocr/tessdata_best/blob/main/jpn_vert.traineddata -P /usr/share/tesseract-ocr/4.00/tessdata/


おまけ(OpenCVの設定について)

pytesseractとは別件ですが、OpenCVもセットアップしたので、その時のメモ。

pip install opencv-python
sudo apt-get update
sudo apt-get install -y libgl1-mesa-glx


おわりに

最後まで読んで頂き、ありがとうございます!

ChatGPTを使用すると、作業スピードが格段に上がり、本来、精査とトライアンドエラーで1週間かかる作業が、1日以内で出来るぐらい生産性が上がったような気がします。生産性が上がると出来ることも増えるので、今後もChatGPTの活用方法を模索していきたいと思います!

この記事が気に入ったらサポートをしてみませんか?