株式会社エキスパートソフトウェア

ページを読みこみ中・・・

  Tesseract OCRで文字認識  
Tesseract-ocrOCRPython3C++Artificial IntelligenceMachine learningDeep Learning

   Tesseract-OCRとは何ですか?

 Tesseract-OCRとは何ですか?


今日の記事では、TesseractとPythonというオープンソースのツールを使用して、画像内のテキストを認識する方法を学びます。 画像からテキストを抽出する方法は、光学式文字認識(OCR)または時には単にテキスト認識とも呼ばれる。

オープンソースで使用可能なOCRはTesseract OCRが優秀だということでこちらを使ってみたいと思います。



Tesseractは、Apache 2.0ライセンスの下で利用可能なオープンソースのテキスト認識(OCR)エンジンです。 直接使用することも、(プログラマーの場合は)APIを使用して画像から印刷テキストを抽出することもできます。 さまざまな言語をサポートしています。

TesseractはUnicode(UTF-8)をサポートしており、100以上の言語を「そのまま」認識できます。Tesseractは他の言語を認識するように訓練することができます。

開発環境:windows 10 64bit

 Tesseract OCRをGitHubからダウンロードする

ダウンロードしたファイルを実行する。

ファイル名 tesseract-ocr-setup-4.00.00dev.exe

 下記のインストールガイドを参照してください

環境変数Pathに「C:\Program Files \Tesseract-OCR」を追加。



Tesseract OCRをインストールした場所でcmdを開く。

>tesseract -v



住所: C:\Program Files\Tesseract-OCR\tessdata

既に作成されている場合は不要。



 Tesseractは多くの言語について訓練されています。Tessdataリポジトリであなたの言語をチェックしてください。この記事では、TrainingTesseractについてはあまり触れません。

 他の言語やスクリプトをサポートするように訓練することもできます。 詳細については、TrainingTesseractを参照してください

画像ファイルから文字を読み取り、テキストファイルに出力するもし、テキストファイルが無いなら、新しくファイルを作る起動コマンドはwikiのCommand Line Usageに記載されている。

tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]。

各オプションがどのような動作を行うのかを下記にまとめた。

tesseract image_name output_base

下のコマンドが最も基本的な使い方となる。

入出力引数について。

1)image_nameには画像ファイルもしくはテキストファイルへのパスを記載する。

2)outputbaseには出力先ファイルへのパスを記載する。ファイル名のみ記載して出力形式を指定しない場合、デフォルトではtxt形式のファイルが結果として出力される。

デフォルトの仕様。

入出力引数以降のオプションを指定しない場合、解析言語はデフォルトで英語を、ページセグメンテーションモード(以後、psm)はデフォルトで3を指定し、かつ結果をtxt形式で出力する。。

Tesseract OCRを実行する場合は縦・横を認識するosd.traineddataと英語の言語データであるeng.traineddata、及び全ての言語データはtessdataディレクトリに格納されている必要がある。

また、TESSDATA_PREFIX環境変数はtessdataの親ディレクトリを指している必要がある。

通常オプションに何も指定しない場合、-l engが指定されたものとして文字認識を行うが、指定することにより英語以外の言語として文字認識を行わせることが可能になる。

単一言語を使用して文字認識を行う-l LANGのオプションを追加し、認識を行わせる言語を変更することが可能。LANGに指定できる文字列はtesseract --list-langsを実行した場合に表示される言語コードの一覧のみ使用可能。

複数の言語を使用して文字認識を行う。

複数言語を指定する場合、認識をさせたい言語を全て+で連結させる。

第一言語を入れ替えた場合で出力結果が異なる可能性がある。



Command : tesseract input.png output -l jpn+eng+vie

出力形式はtxt、pdf、hocr、tsv、テキストのみのpdfの5種類で行うことができる。複数形式指定することが可能。

pdfに設定した場合、読み込んだ画像にテキストが追加された状態のpdfが出力され、-c textonly_pdf=1を追加するとテキストのみのPDFを作成する事が可能。

また、出力形式にlogfileを追加した場合、通常コマンドラインに出力されているデバッグメッセージをtesseract.logとして出力することができる-l LANG及び、--psm Nは出力形式およびコンフィグファイルの前に記載する必要がある。

# 日本語ファイルを使用して文字認識を行い、pdfで出力する。

tesseract D:/test/test.png D:/test/output -l jpn pdf

# 日本語ファイルを使用して文字認識を行い、txtとpdfで出力する。

tesseract D:/test/test.png D:/test/output -l jpn txt pdf

LSTMでのトレーニングについては今までのエンジンよりはるかに多くのトレーニングデータを必要とするため、トレー人具にかかる時間が数日から数週間かかる可能性がある。しかし、特定の問題に対処するために再トレーニングを必要とする場面が出てくる。

ハードウェア条件としては、Linux以外では基本動作を確認していない。MacOSではほとんど動作すると思われるが、シェルスクリプトへのマイナーハックが必要になる場面がある可能性がある。

PythonからTesseract OCRを使用するためのライブラリは有名なもので以下の3種類が存在する模様。

Cythonを利用してTesseract OCRのC++ APIと直接結合する。Tesseractで画像を処理している間にGILを解放することにより、Pythonの並列化を行った際に同時実行を可能にする。

Tesseract以外にLibtesseract、CuneiformのOCRライブラリでもある。GNU/Linux上でのみテストされているが、BSDやMac、Windowsでも動作する。

PILでサポートされた画像を全て読み込む事が可能。また、スクリプトとして起動した場合にテキストファイルに書き込まずに印刷する事ができる。

例えばpytesseractを使う



 PythonとTesseract OCRで文字認識

 Link clone or download source code


Facebookも情報発信中!
広告