目的

PyPI (pip) でTesseract-OCRを構築する方法はネット上にたくさん情報が出ているのですが、Anaconda (conda) に関する情報が少ないです。
私が構築した際につまずいた点があったので備忘録として対策まとめておきます。

システム要件

    • Windows 11 Home 22H2

 

    • Anaconda 3.11.1

Python 3.9.15

試したこと

成功

    • Anaconda Promptで conda install -c conda-forge tesseract

Jupyter Notebook上で tesseract と tessdata のパス指定

失敗

    • Windowsに直接Tesseract-OCRをインストール

 

    • Jupyter Notebook上で !conda install -c conda-forge tesseract

Jupyter Notebook上で !pip install tesseract-ocr libtesseract-dev tesseract-ocr-jpn

libtesseract が見つからないと怒られる

成功した方法

Anaconda PromptでTesseract-OCRをインストール

(base) > conda install -c conda-forge tesseract

ここでAnaconda Prompt上で tesseract が動くか試します。
正しく言語リストが表示されています。

(base) > tesseract --list-langs
List of available languages in "C:\Users\kabeg\anaconda3\share\tessdata/" (125):
afr
amh
ara
asm
(中略)

Jupyter Notebookで動作確認 → 言語リストが空??

続いてJupyter Notebook上でも tesseract の動作確認です。
tesseract 自体は動いているように見えますが、言語リストが空です。
また言語データ tessdata のディレクトリはC:/Users/username/anaconda3/share/tessdata にあるはずですが、どういうわけか ./ になっています。

!tesseract --list-langs
# List of available languages in "./" (0):

Jupyter Notebook上でPathを通す

Windowsの環境変数もいじってみましたが、効果がなかったのでJupyter Notebook上でパスを指定します。
以下のコードを import 文の下などにおいて実行します。

import pyocr
import os

TESSDATA_PATH = 'C:\\Users\\username\\anaconda3\\share\\tessdata'        # tessdataへのパス (anacondaでインストールの場合)
                                                                         # usernameは環境によって変わります
# TESSDATA_PATH = 'C:\\Program Files\\Tesseract-OCR\\tessdata'           # tessdataへのパス (Windows直インストールの場合)
# TESSERACT_PATH = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'     # tesseractが実行できない場合はtesseract.exeにパスを通す

os.environ["TESSDATA_PREFIX"] = TESSDATA_PATH          # tessdataへのパスを通す
# os.environ["PATH"] += os.pathsep + TESSERACT_PATH    # tesseract.exeのパスも指定する必要が有る場合

再度Jupyter Notebookで動作確認

今度は問題なく言語リストが読み込めました。

!tesseract --list-langs
List of available languages in "C:\Program Files\Tesseract-OCR\tessdata/" (6):
eng
jpn
jpn_vert
osd
script/Japanese
script/Japanese_vert

考察

一番不思議なのはAnaconda Prompt上では言語データへのパスがうまく通っていたのにJupyter NB上ではパスが通っていなかったことです。
考えられる原因としてはJupyter NBで走っているAnacondaは仮想環境であるためパッケージ等は引き継がれるがパス等は引き継がれないことです。
正直私はPython周りにあまり明るくないのでもし原因に心当たりがある方がいらっしゃればコメント等でご教示いただけると幸いです。

广告
将在 10 秒后关闭
bannerAds