前提・実現したいこと
tesseractを使って中国語のocrをしたいと考えています。
中国語のocrをしたい場合学習済みデータを追加する必要があると思います。
その際、学習データの追加方法には2つあって、sudo apt install tesseract-ocr-chi-sim を用いてインストールするか、https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata
よりインストールする方法があると思います。
sudo apt install よりインストールする方法では正しく中国語データが追加されて無事ocrできました。
しかし、後者の方法で試したところ、何度やってもうまくできません。
後者の方法で試したい理由としては、sudo apt install からインストールされるデータよりも後者の方がocrの精度が高いのではないかと考え、実際に試してみたいと考えているからです。
なにかできない理由をご存じないでしょうか?
発生している問題・エラーメッセージ
後者の方法でデータを追加した場合、以下のエラーが発生します。
$ tesseract 0.jpeg output -l chi_sim
Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
Failed loading language 'chi_sim'
Tesseract couldn't load any languages!
Could not initialize tesseract.
試したこと
前者の場合でも後者の場合でもともにtesseractの言語データは以下のようになりました。
$ tesseract --list-langs
List of available languages (5):
chi_sim
chi_tra
eng
jpn
osd
言語データは /usr/share/tesseract-ocr/4.00/tessdata/に含まれていて、データを入れる場所の間違いはありません。
今回出てきたエラーは言語データのパスのせいのはずなので、以下の2通りでパスを通して実行を試みましたが、こちらも同様のエラーが出ました。
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata/
tesseract 0.jpeg output -l chi_sim --tessdata-dir /usr/share/tesse
ract-ocr/4.00/tessdata
補足情報(FW/ツールのバージョンなど)
$ tesseract --version
tesseract 4.0.0-beta.1
leptonica-1.75.3
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.2) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX2
Found AVX
Found SSE
tesseractのバージョンは上の通りで、osはwindows10のwslを使ってubuntuから実行しています。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
エラーメッセージを読んでみましょう
Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
「ファイル /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata を開くのに失敗しました。」
ファイルを開くことが出来なかったのですから、ファイル名やファイルパスに問題があるのだろうと思いましょう。
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
「環境変数 TESSDATA_PREFIX が、あなたの"tessdata"ディレクトリに設定されていることを確認して下さい。」
ファイルを開くことが出来なかった原因が、環境変数 TESSDATA_PREFIX の設定にあるのではないかとの助言です。
質問には『言語データは /usr/share/tesseract-ocr/4.00/tessdata/に含まれていて、データを入れる場所の間違いはありません』と書かれていますが、それなら何故、/usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata を開くことが出来ないのでしょうか?
本当に、/usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddataというファイルは存在していますか?
ファイルやディレクトリのパーミッションに問題はありませんか?
==
エラーメッセージから読み取れる状況と、それへの対処・確認方法を書きました。
参考にしてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2020/01/11 00:17
回答に気付くのが遅くなってしまって大変申し訳ありませんでした。
coco_bauerさんのおっしゃるとおり、環境変数 TESSDATA_PREFIXに原因があるのではないかと私も疑っています。
環境変数の方は~/.bashrcや~/.profileに
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata/
と入力し正しく設定しました。パスの確認をすると以下のように出力されています。
echo $TESSDATA_PREFIX
/usr/share/tesseract-ocr/4.00/tessdata/
また、traineddataは以下のように存在しています。
/usr/share/tesseract-ocr/4.00/tessdata$ ls
chi_sim.traineddata configs jpn.traineddata osd.traineddata tessconfigs
chi_tra.traineddata eng.traineddata pdf.ttf
最初の質問の際にこちらの情報を載せるのを忘れてしまい申し訳ありません。
こちらの問題ですが、未だに解決しておりません。
私が上に書いたことでどこか間違ったり不足している箇所があるかご存じでしょうか?
ご助言いただけると幸いです。よろしくお願いいたします。
2020/01/11 11:47
また、
"ls -l /usr/share/tesseract-ocr/4.00/tessdata/*"というコマンド(ディレクトリ/usr/share/tesseract-ocr/4.00/tessdata/にあるファイルの詳細情報を表示するコマンド)を実行してみてください。
各ファイルの所有者とパーミッションを見て、どのようなアクセス(表示、書き込み等)が可能なのか確認してみてください。
ファイルが存在しているのに開けないというのは、何らかの許可権限(パーミッション)が足りないための可能性があります。
2020/01/14 23:05
"cat /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata"というコマンドの出力ですが、cat /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
cat: /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata: Permission denied
となり、後者の出力ですが、
ls -l /usr/share/tesseract-ocr/4.00/tessdata/*
---------- 1 root root 44366093 Jan 10 10:05 /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
-rw-r--r-- 1 root root 2366642 Sep 25 05:30 /usr/share/tesseract-ocr/4.00/tessdata/chi_tra.traineddata
-rw-r--r-- 1 root root 4113088 Sep 25 05:30 /usr/share/tesseract-ocr/4.00/tessdata/eng.traineddata
-rw-r--r-- 1 root root 2471260 Sep 25 05:30 /usr/share/tesseract-ocr/4.00/tessdata/jpn.traineddata
---------- 1 root root 11696686 Jan 10 10:08 /usr/share/tesseract-ocr/4.00/tessdata/line2.traineddata
-rw-r--r-- 1 root root 10562727 Sep 25 05:30 /usr/share/tesseract-ocr/4.00/tessdata/osd.traineddata
-rw-r--r-- 1 root root 572 Jan 8 06:09 /usr/share/tesseract-ocr/4.00/tessdata/pdf.ttf
のようになりました。
パーミッションが足りないようですね…。
coco_bauerさんのおかげで原因がわかったので解決したように思えたのですが、wsl上のubuntuを使用しているために、パーミッションの変更ができませんでした。
$ chmod u-r /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
chmod: changing permissions of '/usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata': Operation not permitted
chmod o-r /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata
chmod: changing permissions of '/usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata': Operation not permitted
https://ja.stackoverflow.com/questions/60298/chmod-operation-not-permitted-%E3%81%A8%E3%81%84%E3%81%86%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
こちらなどを参照して
$ sudo umount /mnt/c
$ sudo mount -t drvfs C: /mnt/c -o metadata
の実行や/etc/wsl.confの編集を行ってみたのですが変わらずパーミッションの変更ができませんでした。
何度も申し訳ございません。こちら対処法ご存じでしょうか?(上までのようにそもそもなにか足りていない部分があるかもしれません。)
とりあえず、パーミッションに原因があると判明させていただいたことに大変感謝しています。ありがとうございます。度々申し訳ございませんがこちらもご存じでしたら回答していただけたら幸いです。