🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

3925閲覧

tesseractの言語データ追加について

hikaru7

総合スコア6

Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/12/11 00:51

編集2019/12/22 02:33

前提・実現したいこと

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から実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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というファイルは存在していますか?
ファイルやディレクトリのパーミッションに問題はありませんか?

==
エラーメッセージから読み取れる状況と、それへの対処・確認方法を書きました。
参考にしてください。

投稿2019/12/24 01:36

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikaru7

2020/01/10 15:17

coco_bauerさん、詳しく回答してくださって大変ありがとうございます。 回答に気付くのが遅くなってしまって大変申し訳ありませんでした。 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 最初の質問の際にこちらの情報を載せるのを忘れてしまい申し訳ありません。 こちらの問題ですが、未だに解決しておりません。 私が上に書いたことでどこか間違ったり不足している箇所があるかご存じでしょうか? ご助言いただけると幸いです。よろしくお願いいたします。
coco_bauer

2020/01/11 02:47

"cat /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata"というコマンド(ファイル /usr/share/tesseract-ocr/4.00/tessdata/chi_sim.traineddata の内容を画面に表示するコマンド)を実行してみてください。 どうなりますか? また、 "ls -l /usr/share/tesseract-ocr/4.00/tessdata/*"というコマンド(ディレクトリ/usr/share/tesseract-ocr/4.00/tessdata/にあるファイルの詳細情報を表示するコマンド)を実行してみてください。 各ファイルの所有者とパーミッションを見て、どのようなアクセス(表示、書き込み等)が可能なのか確認してみてください。 ファイルが存在しているのに開けないというのは、何らかの許可権限(パーミッション)が足りないための可能性があります。
hikaru7

2020/01/14 14: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の編集を行ってみたのですが変わらずパーミッションの変更ができませんでした。 何度も申し訳ございません。こちら対処法ご存じでしょうか?(上までのようにそもそもなにか足りていない部分があるかもしれません。) とりあえず、パーミッションに原因があると判明させていただいたことに大変感謝しています。ありがとうございます。度々申し訳ございませんがこちらもご存じでしたら回答していただけたら幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問