TesseractとOpenCVのどちらを選択するのですか?[閉まっている]


93

最近、TesseractOpenCVに出会いました。Tesseractは本格的なOCRエンジンであり、OpenCVをOCRアプリケーション/サービスを作成するためのフレームワークとして使用できるようです。

一部の画像でTesseractを使用してみましたが、その精度はまともです。後で、OpenCVを使用してPythonを使用してOCRを実行する方法に関する非常に簡単なチュートリアルに出会い、感銘を受けました。数分で、システムのトレーニングが終了し、その精度は良好でした。しかし、もちろん、このアプローチを取るには、大規模なトレーニングセットを使用してシステムを広範囲にトレーニングする必要があることを意味します。

私の具体的な質問は次のとおりです。

  • TesseractとOpenCVを使用してカスタムOCRアプリを作成する方法をどのように選択しますか?
  • Tesseractで使用できるさまざまな言語のトレーニングデータセットがあります。OpenCVにも同様のものがあるので、OCRを達成するために最初からやり直す必要はありませんか?
  • 商用アプリケーションになりたい方はどちらが良いですか?

助言がありますか?


8
以下の答えは本当に素晴らしいですが、OCRで機能したことがあるので、Tesseractの認識品質は商用アプリユーザーの期待を下回っていると言えるでしょう。Tesseractは素晴らしいですが、OCRは難しいです。オンライントレーニングやその場での改善などは、まだ研究中です。最近TSの大スポンサーであるGoogleは、独自のエンジン、OCROpusを構築することを決定しました。そして、それをオープンソース化することを約束しましたが、コア認識エンジンはまだ利用できません-彼らはフレームワークを公開しただけです-それはtesseractのAPIです。
サム

3
@vasile:それは非常に有益です。OCROpusを知りませんでした。ありがとうございました。私の最終目的が名刺OCR(または、私がリンクしたようなガソリンスタンドの領収書を読み取るもの:upload.wikimedia.org/wikipedia/en/3/34/…)?多くのモバイルアプリがこれを実現するために何を使用しているかに興味があるので、私は尋ねています。サーバー側でOCRを実行してもかまいません。このクールなデモを見て、OpenCVを使いたくなりました:youtube.com/watch
Legend

6
いくつかの商用OCRエンジンがあり、GoogleだけでOCR accuracy testsいくつかのグラフが見つかります。また、モバイルアプリについては、ほとんどがtesseractを使用しています。しかし、それらのいくつかをダウンロードすることに迷惑をかけると、結果が約束とは少し異なることがわかります。彼らは通常、慎重に管理された環境でビデオデモを作成し、それをyoutubeに投稿しますが、実際には、ページ、レシピ、カードなどをスキャンすると、面白い結果が得られます。
Sam

1
@vasile:ありがとう。今夜私を忙しくさせている何か。本当にありがとうございました。
Legend

回答:


77
  • TesseractはOCRエンジンです。特に、画像からテキストを読み取り、基本的なドキュメントセグメンテーションを実行し、特定の画像入力(単一の単語、行、段落、ページ、限定された辞書など)を操作するために、Googleが使用、作業、および資金提供しています。

  • 一方、OpenCVは、いくつかの機能抽出とデータ分類を実行できる機能を含むコンピュータービジョンライブラリです。基本的なOCRを実行する単純な文字セグメンターと分類子を作成できますが、これは非常に優れたOCRエンジンではありません(Pythonでゼロから作成したものです。トレーニングデータから逸脱した入力に対しては非常に不正確です)。

OCRの難しさの基本を理解したい場合は、OpenCVを試してください。Tesseractは実際の OCR用です。


3
それはあなたの入力画像に依存します。Tesseractは、文字がくっきりと、水平線で、間隔が空いていて、接続されておらず、完全に白黒である場合に最適です。私はDIYの本のスキャン/保存コミュニティで約1年間いじり、空き時間にソフトウェアの開発に取り組み、プロセスを容易にしました。最高の後処理用(商用を問わず)そこにソフトウェアの任意のテキストとイメージがあるスキャンテーラー。これにはいくつかのCLIオプションがありますが、それがどのように機能するかを確認するのに少し時間がかかると、それはかなり驚くべきことです。
Blender 2012

2
私はScan Tailorのソースコードに少し取り組んだところ、内部でOpenCVを使用していませんが、作成されたアルゴリズムの多くは、OpenCVの関数で簡単に書き換えることができます。画像が歪んでおらず、劣化していない場合は、Tesseractに画像を送る前に、適応二値化と簡単な斑点除去を実装するだけで十分です。
Blender 2012

1
あなたの質問については、私は昨日いくつかのランダムな入力画像をテストしていました。私はガソリンスタンドからの領収書を試してみました:upload.wikimedia.org/wikipedia/en/3/34/…それ08(合計で$ 20.00)として認識されました。数字を解読するのも難しいことは認めますが、Tesseractをこれらの状況に適応させるために他に何ができるのか、またはアクティブなユーザーベースがいる場合に学習コンポーネントを導入することはできませんでした。
レジェンド

5
Tesseractは、特定のフォントセットを読み取るようにトレーニングされています。それらのブロック状の文字はそれらの1つではありません。動物の犠牲をGoogleに提示し、Tesseractを自分でトレーニングする必要があります。code.google.com
Blender

1
また、それらの文字を読み取るためのカスタムOCRエンジンの作成に着手する前に、それが正確であるとは期待しないでください。Wheel of Fortuneを自動化するために1つ作成し、サンプル画像(オンラインゲームのスクリーンショット)はJPEGでした。JPEG圧縮のアーティファクトは、各文字のサンプル画像を約10〜20枚提供しない限り、画像分類子を台無しにするのに十分でした。
Blender 2012

65

私はあなたが言及したその数字認識チュートリアルの作者です、そして私はそれがtesseractに代わる方法では決してないと言うでしょう。

Tesseractは本当に優れたOCRエンジンであり、最高のオープンソースOCRエンジンかもしれません。

あなたが言及したチュートリアルは、OCRの最も単純な動作を理解するための単なる試みです。

したがって、OCRアプリを探している場合は、画像の前処理にOpenCVを使用してから、tesseractエンジンを適用することをお勧めします。


1
+1ありがとうございます。最初に、チュートリアルをありがとう:)それは本当に興味深い読み物でした。TesseractとともにOpenCVを利用する方法についての参考資料/チュートリアルを知っていますか?インターフェースについてではなく、Tesseractの精度を向上させるために実行する必要がある画像変換や前処理の種類について説明していますか?
Legend

2
言いたいのは、Tesseractは他のエンジンと比較して優れたOCRエンジンですが、それでもかなり不正確ですが、正しいテキストを認識させるのに約40%成功しています。うまくいけば、それは数年で良くなるでしょう。
GangstaGraham 2013

4
@GangstaGraham tesseractをトレーニングするだけで、数時間ではなく数時間または数日でより良い結果を得ることができます。opensource.newmediaist.com/tesseract-training.html
valentt 2013年

1
リアルタイムのテキスト抽出にはPyTesseractを使用しています。Linux PCでは問題なく動作しますが、Raspberry Pi環境では非常に遅くなります...軽量バージョンをインストールする方法はありますか?たとえば、英語のアルファベットの数字と大文字のみを処理しますか?
Yuriy Chernyshov

9

この2つは補完的です。OpenCVに関する論文を読んだ場合:https : //github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf

これは、「HPが独自に開発したページレイアウト分析テクノロジが製品で使用されていたため(そしてオープンソース向けにリリースされていなかったため)、Tesseractは独自のページレイアウト分析を必要としなかったため、Tesseractはその入力がオプションの多角形テキスト領域が定義されています。」

このタイプのタスクはOpenCVによって実行でき、結果の画像はTesseractに渡されます。このタイプのコードのサンプルは、Gitリポジトリで見つけることができます。https//github.com/Itseez/opencv_contrib/tree/master/modules/text/samples サンプルは、Tesseract APIを使用して画像からテキストへの変換を行います。


3

OpenCVはCVのライブラリであり、一般的に画像の分析と処理に使用されます。Tesseractは、画像からテキストを抽出することに特化したCVの特殊なサブセットであるOCRのライブラリです。

OpenCV.orgから

.....顔の検出と認識、オブジェクトの識別、ビデオでの人間の行動の分類、カメラの動きの追跡、移動するオブジェクトの追跡、オブジェクトの3Dモデルの抽出、ステレオカメラからの3D点群の生成、画像をつなぎ合わせて高いシーン全体の解像度画像、画像データベースからの類似画像の検索、フラッシュを使用して撮影された画像からの赤目の除去、目の動きの追跡、風景の認識、マーカーを確立して拡張現実をオーバーレイ

Tesseract Githubから:

.....直接、または(プログラマの場合)APIを使用して、画像から入力、手書き、または印刷されたテキストを抽出できます。さまざまな言語をサポートしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.