LoginSignup
23
29

More than 3 years have passed since last update.

OCRエンジンのTesseract(テッセラクト)を用いて画像ファイル内のテキストを抽出してみた

Last updated at Posted at 2020-07-28

背景

画像ファイル(帳票データのスキャン)から、Tesseract(テッセラクト)を用いて、テキストデータをサクッと抽出できたので、備忘録として、整理した。

  • Tesseract(テッセラクト)は、日本語にも対応したOCRエンジン
  • オープンソースでライセンス(関連記事1.)は「Apache License 2.0」ということで、商用利用も可能
  • Tesseract 4 からは、RNN (Recurrent Neural Network) を拡張したLSTM(Long short-term memory)をベースとしたOCRエンジンAI-OCR)も搭載されており、これを利用することで、抽出精度も期待できる(と思う)
  • サポート言語は、tesseract/doc/tesseract.1.ascから数えたところ、117個存在した(2020/7/25時点)

1.導入

2.実行

  • 実行においては、テストデータとして、【エクセル・マクロ】VBA+OCRで画像内のテキストを抽出するで紹介されている、テスト画像データを活用
  • 実行に先立って、実行用に『PythonでOCRを実行する方法(関連記事3.)』を参考に、pythonコードを作成
  • pythonからtesseractを利用するには、PyOCRパッケージが必要
  • このパッケージを利用することで、よりテキストの抽出精度が向上(ゴミ削除)が可能(のようである)
  • 実行結果を以下に記載
C:\Users\xxx\work>python ocr_card.py test_data_3.png
画像上に記載されている文字列をプログラムで解析し、テキストだけを文字列として取得することが可能です!今回は、間料です友に 偽え、それをりの若六は見ふめる、をんな文字認識方法を紹介しだいと思います。
画像上に記載されている文字列を
プログラムで解析し、テキストだ

けを文字列として取得することが

可能です!

今回は、間料です友に偽え、それ
をりの若六は見ふめる、をんな文
字認識方法を紹介しだいと思いま
す。
C:\Users\xxx\work>python ocr_card.py test_data_3_mod.png
画像上に記載されている文字列をプログラムで解析し、テキストだけを文字列として取得することが可能です!今回は、和科料て考醤 に偽え、それをりの若病は見人ふめる、才んな文字認識方法を紹介しだいと思います。
画像上に記載されている文字列を
プログラムで解析し、テキストだ
けを文字列として取得することが
可能です!

今回は、和科料て考醤に偽え、それ
をりの若病は見人ふめる、才んな文
字認識方法を紹介しだいと思いま
す。

3.考察

  • 明朝フォント、ゴシックフォントにおいては、正しく画像内のテキストが抽出できている
  • その他フォントでは、誤抽出が目立っている
  • このことから、他の日本語フォントでは、おそらく学習データがなくトレーニングされていないと考えられる  ⇒ したがって、画像原本内で利用されているフォントを学習させることで、誤抽出の削減が期待できる
  • また、画像を拡大することで、最初の実行結果である空白行(誤抽出)の削除に繋がっている  ⇒ したがって、画像データを少しでも拡大することで、より誤抽出の削減に期待できる

4.精度向上

では、どうやって精度を上げていくか?

・独自に学習データを作成して学習させる

素人的に考えられる方法としては、次のとおり。しかし、こういったことができるのか、ツール(今回は、Tesseract(テッセラクト))を調べる必要がある。
(1) 手書きの場合 ⇒ 画像原本内の手書き文字の特徴(クセ)を反映した学習データを準備し学習させる。
・『Tesseract 4.1にLSTMを使って手書き文字を再学習させる(関連記事7.)』
・『【23個掲載】OCR(光学式文字認識)・手書き文字認識データセットまとめ(関連記事8.)』

(2) 画像原本内で使われているフォントを学習データとして用意して、学習させる

・すぐにでもできる方法

【SikuliX】OCRの日本語読み取り精度を上げる3つの方法(関連記事9.)』に記載されている、次の3つを試してみることで精度向上が期待できる(と思われる)
(1)適切な文字サイズに画像を拡大して読み取る
(2)できるだけ高解像度の画像を用意する
(3)ブラックリスト、ホワイトリストを設定する

関連記事

1.OSSのライセンスを理解する(「使用」と「利用」の違い、知っていますか?)
2.Tesseract OCR をWindowsにインストールする方法
3.PythonでOCRを実行する方法
4.【Pyocr+TesseractOCR】競馬新聞の活字化;精度向上♬
5.八谷大岳の覚え書きブログ
6.PythonでPDFを画像ファイル(JPEG、PNG)に変換する方法
7.Tesseract 4.1にLSTMを使って手書き文字を再学習させる
8.【23個掲載】OCR(光学式文字認識)・手書き文字認識データセットまとめ
9.【SikuliX】OCRの日本語読み取り精度を上げる3つの方法
10.Documentation of Tesseract OCR
11.tesseract-ocr/tesseract
12.PythonとTesseract OCRで文字認識
13.Tesseract 4.1にLSTMを使って日本語を再学習させる
14.甲骨文字で書かれた文章をOCRで読み取れるようにしてみる
15.文字認識エンジンTesseract OCRで学習
16.jTessBoxEditorでTesseractの学習データを作成する
17.Tesseract+PyOCRで簡易OCRを試してみる
18.PyOCRでTesseractを使う
19.罫線の無い 10 行 10 列の等間隔整列した文字の画像を大きくリサイズして ocr してみる(Python + Tesseract)
20.tesseractコマンドの使い方(Tesseract OCR 4.x)
21.tesseract のオプション PSM をいじってみた
22.Pythonで書くTesseract 4の基本的な使い方。APIとCLIからOCRを実行する方法

23
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
29