「日本語をOCR(文字認識)したい」
「Tesseractで日本語を利用できるようにしたい」
「Tesseractで縦書き文字を認識したい」
このような場合には、この記事の内容が参考となります。
この記事では、Tesseractで日本語をOCR(文字認識)する方法を解説しています。
本記事の内容
- Tesseractで日本語をOCR(文字認識)できない
- Tesseractの対応言語
- Tesseractにおける日本語ファイルのインストール
- Tesseractによる日本語OCRの動作確認
それでは、上記に沿って解説していきます。
Tesseractで日本語をOCR(文字認識)できない
Tesseractで日本語をOCR(文字認識)できない場合があります。
例えば、次のような画像があるとします。
test.png
そして、この画像をOCRした結果が以下のようになったとします。
$ tesseract test.png - Estimating resolution as 182 Rey yalARAlsL, HRA OPER LES CRS, OLD ARIE OA BURERS TELO FCB ON, HREO FRE RICLORARRO BRIERE ICONS, KL, ARICA, ERA LMS OBAMA EST IET MPLH7EHRG| ASAT BEICZRD, BL CLA CER OT —FIONSILET, Hh BACHLLD LV YE AERIS ALT CHER TE BLIGE, NE ORA RAV obEBIEDLID.
この結果は、日本語のOCRとしては失敗と言えます。
このような場合に必要な作業を以下で説明します。
なお、Tesseractは以下の記事の方法でインストールしています。
Tesseractの対応言語
まずは、Tesseractで利用可能な言語を確認しましょう。
Tesseractが対応している言語は、以下のページで確認できます。
https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html
ただし、デフォルトでは一部の言語しか利用できません。
インストールしたTesseractで利用できる言語は、次のコマンドで確認できます。
tesseract --list-langs
デフォルトでTesseractをインストールした環境では、以下の実行結果となります。
環境によっては、結果が異なることもあるでしょう。
$ tesseract --list-langs List of available languages in "/usr/share/tesseract-ocr/5/tessdata/" (2): eng osd
そして、「/usr/share/tesseract-ocr/5/tessdata/」以下は次のような状況です。
$ ls -l /usr/share/tesseract-ocr/5/tessdata/ 合計 14348 drwxr-xr-x 2 root root 4096 5月 12 07:57 configs -rw-r--r-- 1 root root 4113088 9月 25 2019 eng.traineddata -rw-r--r-- 1 root root 10562727 9月 25 2019 osd.traineddata -rw-r--r-- 1 root root 572 4月 24 19:30 pdf.ttf drwxr-xr-x 2 root root 4096 5月 12 07:57 tessconfigs
「traineddata」という拡張子のファイルが、言語ファイルになることがわかります。
ここには、日本語の「jpn」は存在していません。
以上、Tesseractの対応言語を説明しました。
次は、Tesseractにおける日本語ファイルのインストールを説明します。
Tesseractにおける日本語ファイルのインストール
Tesseractの日本語化に必要なパッケージを探します。
$ sudo apt search tesseract-ocr-jpn ソート中... 完了 全文検索... 完了 tesseract-ocr-jpn/jammy 1:5.0.0~git39-6572757-2ppa1~jammy1 all tesseract-ocr language files for Japanese tesseract-ocr-jpn-vert/jammy 1:5.0.0~git39-6572757-2ppa1~jammy1 all tesseract-ocr language files for Japanese (vertical)
上記の二つがヒットしました。
横書きと縦書きということですね。
それぞれをインストールしましょう。
その際には、以下のコマンドを利用します。
sudo apt-get update sudo apt install -y tesseract-ocr-jpn sudo apt install -y tesseract-ocr-jpn-vert
インストールはすぐに完了します。
では、利用可能な言語を確認しましょう。
$ tesseract --list-langs List of available languages in "/usr/share/tesseract-ocr/5/tessdata/" (4): eng jpn jpn_vert osd
言語ファイルも確認しておきます。
$ ls -l /usr/share/tesseract-ocr/5/tessdata/ 合計 19732 drwxr-xr-x 2 root root 4096 5月 12 07:57 configs -rw-r--r-- 1 root root 4113088 9月 25 2019 eng.traineddata -rw-r--r-- 1 root root 2471260 9月 25 2019 jpn.traineddata -rw-r--r-- 1 root root 3037480 9月 25 2019 jpn_vert.traineddata -rw-r--r-- 1 root root 10562727 9月 25 2019 osd.traineddata -rw-r--r-- 1 root root 572 4月 24 19:30 pdf.ttf drwxr-xr-x 2 root root 4096 5月 12 07:57 tessconfigs
問題なさそうです。
以上、Tesseractにおける日本語ファイルのインストールを説明しました。
次は、Tesseractによる日本語OCRの動作確認を説明します。
Tesseractによる日本語OCRの動作確認
test.pngをここでも利用します。
まずは、同じコマンドを試します。
$ tesseract test.png - Estimating resolution as 182 Rey yalARAlsL, HRA OPER LES CRS, OLD ARIE OA BURERS TELO FCB ON, HREO FRE RICLORARRO BRIERE ICONS, KL, ARICA, ERA LMS OBAMA EST IET MPLH7EHRG| ASAT BEICZRD, BL CLA CER OT —FIONSILET, Hh BACHLLD LV YE AERIS ALT CHER TE BLIGE, NE ORA RAV obEBIEDLID.
「-l」の設定がない場合は、「eng」を指定していることになります。
$ tesseract test.png - -l eng Estimating resolution as 182 Rey yalARAlsL, HRA OPER LES CRS, OLD ARIE OA BURERS TELO FCB ON, HREO FRE RICLORARRO BRIERE ICONS, KL, ARICA, ERA LMS OBAMA EST IET MPLH7EHRG| ASAT BEICZRD, BL CLA CER OT —FIONSILET, Hh BACHLLD LV YE AERIS ALT CHER TE BLIGE, NE ORA RAV obEBIEDLID.
同じ結果ですね。
では、「eng」を「jpn」に変更してみましょう。
$ tesseract test.png - -l jpn Estimating resolution as 182 キャッシュレス決済は、 消費者の利便性向上だけでなく、 店舗のレジ精算業務の削 減など現金管理の手間や時間の削減、消費者の手持ち現金不足による機会損失の 防止などにつながる。 また、現金に触れず、従業員と顧客の接触機会を減らすことで 衛生的な取引が可能になる、現金では取得できなかったデータが得られることで、顧 客に対しよりよいサービスを最適なタイミングで提供できるようになるなど、店舗に様々 なメリットをもたらしうる。
完璧な認識率です。
日本語OCRは、問題なく動作しています。
あと、縦書きの検証も行っておきます。
次のような画像を用意します。
test_tate.png
横書きの日本語指定でOCRした結果は、以下。
$ tesseract test_tate.png - -l jpn Estimating resolution as 213 Detected 14 diacritics 性妥G妹内人玖選性 万器じONe全MSG IhKて"
全然ダメですね。
次は、縦書きの日本語「jpn_vert」を指定してOCRを実行。
$ tesseract test_tate.png - -l jpn_vert Estimating resolution as 213 Detected 14 diacritics 日 本 語 の 縦 書 き を 文字 認識 で きる か どう か の テス ト 。
文字間のスペースが気になりますが、文字認識は成功しています。
スペースなんてカットすれば、それほど問題ではありません。
以上、Tesseractによる日本語OCRの動作確認を説明しました。