adbird(広告鳥) 備忘録

ubuntuで画像から日本語OCRでテキスト抽出

Googleドライブ、Googleドキュメントを使って日本語OCRはできるのだけど、いちいち画像をアップロードしたりと面倒なので、精度は落ちるらしいけどサクッと日本語OCRをやりたかったので、やってみた。

tesseract 本体をインストール

 $ sudo apt-get install tesseract-ocr

Windowsの場合は、下記に追記。

日本語を読めるようにする。

 $ sudo apt-get install tesseract-ocr-jpn

のはず…。実は下記の、手動で日本語データをダウンロードする方法でやった後で、上記の方法を知ったので試していない。

手動でダウンロードする場合は、

ダウンロードフォルダ内で端末を開いて、日本語を読み取るためのデータ(jpn.traineddata)をダウンロードして、必要な場所にコピー。

$ wget https://github.com/tesseract-ocr/tessdata/raw/master/jpn.traineddata
$ sudo cp jpn.traineddata /usr/share/tesseract-ocr/4.00/tessdata/jpn.traineddata

※追記:縦書き対応

$ sudo apt install tesseract-ocr-jpn-vert

Windowsの場合のインストール方法

「Tesseract installer for Windows」Home · UB-Mannheim/tesseract Wiki · GitHubから、環境に応じて32bitか64bitのexeファイル(tesseract-ocr-w64-setup-v○○.exe)をダウンロード(今どきはもう、ほぼ64bitだろうけど)。

ダウンロードしたexeファイルを実行して、インストール。

その際、インストール画面で「Additional script data」や「Additional language data」を選択するところがあるので、「Japanese」に全部チェックを入れてからインストールする。

インストールしただけではPATHが通っていないので、PATHを通す。

  • デスクトップ左下の虫メガネアイコンで「環境変数の編集」と入力
  • 「Path」を選び「編集」をクリック
  • 「新規」をクリック
  • 「参照」でパスを通したいプログラム(tesseract.exe)が入っているフォルダ(exeファイルではないので注意。私の環境では「 C:\Program Files\Tesseract-OCR 」だった。)を追加。

winget でインストールまたは最新版に更新した場合

日本語を読み取るためのデータが入っていないので、jpn.traineddatajpn_vert.traineddata をダウンロードして、C:\Program Files\Tesseract-OCR\tessdataの中に入れる必要がある。

実行

以下はtest.pngを読み取って、test.txtを生成。出力先に拡張子(.txt)はいらない。

$ tesseract test.png test -l jpn

縦書きの文章をOCRする場合は

$ tesseract test.png test -l jpn_vert

スクリプト1

半角スペースを削除したり、「,」を「、」に変えたりしたかったので、スクリプト ocr.sh を作った。

tesseract $1 $2 -l jpn
sed -i -e 's/ //g' $2.txt
sed -i -e 's/,/、/g' $2.txt

実行

sh ocr.sh 入力.png 出力名(拡張子なし)

スクリプト2

上記スクリプト1だと、入力名と出力名の2つを打ち込まないといけないので、少し面倒くさい。

出力ファイル名(〇〇.txt)を入力ファイル名(〇〇.png)と同じにしていいのなら、以下のスクリプトを使う。

ただし、こちらは入力画像ファイル名の拡張子をスクリプトの方で設定してあげる必要がある。

tesseract $1.png $1 -l jpn
#tesseract $1.jpg $1 -l jpn
sed -i -e 's/ //g' $1.txt
sed -i -e 's/,/、/g' $1.txt

実行

sh ocr.sh 入力ファイル名(拡張子なし)

参考リンク