Tesseractで日本語をOCR(文字認識)する方法

Tesseractで日本語をOCR(文字認識)する方法 サーバー

「日本語を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の動作確認を説明しました。

タイトルとURLをコピーしました