2016-09-02 7 views
-3

これは長いショットですが、私は尋ねなければなりません。私はTesseract OCRエンジンをより速くするためのアイデアが必要です。私は約20Mページのテキストからなる2MのPDFを処理しており、できる限りのパフォーマンスを得る必要があります。現在の見積もりでは、何もしなければ、これは完了するまでに約1年かかります。テセラクトをより速く作る方法

私はそこでいくつかの向上を得るために入力画像を微調整しましたが、他のアプローチについて考える必要があります。私は、画像の改善が今のところ私をどこにでも連れていくとは思わない。例えば

  • がたTesseractが最適化フラグまたはそのような何かを再コンパイルすることはできますか?
  • 共有CPUメモリまたはGPUを動作させることはできますか?
  • 私はTesseractに何とか多くのメモリを使用するよう指示することができますか(私はそれをたくさん持っています)?
  • CPUバインドされたC++プログラムを高速化する方法はありますか?

現在、Tesseractは、マルチ処理を使用して作業を行う私たちのタスクランナー、Celeryによって運営されています。私はPythonの開発者だとたTesseractはC++で書かれているので、私は(?明らかに)私が話しているかわからない

enter image description here

、この方法では、私はこのようなサーバーの外観を作ることができますここでブーストを得る方法があれば、私はアイディアが大好きです。

答えて

2

私はまた、巨大なOCRニーズがあり、Tesseractは非常に遅いです。私はcustom feedforward net similar to this oneに行くことになった。あなたはそれを自分で構築する必要はありません。あなたはNervana neonのような高性能ライブラリを使うことができます。これは使いやすいものです。非文字から

1)セパレート文字:

は、次に問題には2つの部分があるのです。
2)ネットに文字を送ります。

文字をサイズ1000のバッチでフィードし、各文字のサイズを8 x 8(64ピクセル)に変更し、26文字(小文字の大文字)と10桁の特殊文字(72文字)を認識するとします。グリフ合計)。次に、1000文字すべてを解析すると、2つの(非結合型の)マトリックス製品が完成します。

Aドット B)ドット C

A1000 x 64行列なり、B64 x 256行列なり、C256 x 72行列であろう。

私にとっては、これはTesseractよりも数桁速いです。コンピュータがどれほど速くそれらのマトリックス製品を実行できるかをベンチマークするだけです(要素は浮動小数です)。

マトリックス製品は、最初のものの後にReLUと呼ばれる(安価な)関数を適用する必要があるため、非結合です。

この全体のエンチャラダを最初から使用するには数ヶ月かかりましたが、OCRは私のプロジェクトの大部分でした。

また、セグメント化文字も重要ではありません。 PDFにもよりますが、コンピュータビジョンの簡単なエクササイズから人工知能のオープンなリサーチの問題までさまざまです。

これを行うのが最も簡単で効果的な方法であると主張しているわけではありません。これは単純に私がやったことです!

+1

返信いただきありがとうございます。それはあなたが持っている非常に印象的な設定のように聞こえる。残念ながら、私たちには何か似たようなことをするリソースはありません。 – mlissner

関連する問題