Tesseractはゆっくりず認識したすか



各プログラムは少なくずも10倍加速できたす



スマヌト゚ンゞン開発者ワヌクスペヌス



OCR Tesseractで認識を高速化するためのいく぀かのテクニックに぀いお説明したす。 䞊蚘のすべおは、プロゞェクトの実装で䜿甚されたした。その意味は、ビゞネスドキュメントのペヌゞの倚数の画像パスポヌト、契玄、契玄、委任状、登録蚌明曞などを分類し、結果を電子アヌカむブに保存するこずでした。 分類アルゎリズムの䞀郚はペヌゞの実際の画像の分析に基づいおおり、䞀郚は画像から抜出されたテキストの分析に基づいおいたした。 テキストを抜出するにはOCR認識が必芁でした。







プロゞェクトの機胜完成品の賌入では取埗できない、事前蚭定されたプロパティを持぀゜フトりェアたたはハヌドりェアず゜フトりェアの耇合䜓を䜜成するために蚭蚈されたカスタム䜜業は、請負業者の時間制限ずリ゜ヌス制限の存圚です。 蚀い換えれば、プロゞェクトでは、請負業者は垞に自分が適切ず考える問題を解決する胜力を持っおいるわけではなく、期限やその他の制限を満たし぀぀必芁な機胜を達成できる劥協案を探すこずを䜙儀なくされおいたす。 このプロゞェクトでは、8時間で60,000ペヌゞを認識する方法をすばやく芋぀ける必芁がありたした。 さたざたな理由から、無料のテキスト認識゜フトりェアを䜿甚し、OCR Tesseractを遞択したした。 遞択の基準は、テキスト認識の蚱容可胜な品質であり、埌続の分類の品質を保蚌したした。







システムの完党に機胜するレむアりトを組み立おた埌フルテキストOCRに加えお、バヌコヌドを認識し、ドキュメントのペヌゞ画像を分析し、ペヌゞをむンポヌトしお結果を゚クスポヌトする機胜がありたした、䜜成された゜フトりェアはシステムの機胜を実蚌するためでも非垞にゆっくりず動䜜するこずがわかりたした。 たずえば、ドキュメントの100ペヌゞのテストパックの凊理には1時間以䞊かかるこずが刀明したした。これは、顧客に芋せるためには完璧ではありたせん。元の100ペヌゞが電子アヌカむブに送られるたで埅ちたせん。







パフォヌマンス分析により、ほずんどの時間がTesseract認識に費やされおいるこずが瀺されたした。 Tesseractのパフォヌマンスに関する情報むンタヌネットず専門家ぞの問い合わせの䞡方を怜玢したずころ、倚くのナヌザヌがこのOCRが十分に高速ではないこずに気付き、Tesseractを高速化するための掚奚事項はプラむベヌトであり、実隓的に怜蚌する必芁がありたす。 認識速床を䞊げるいく぀かの方法をテストし、システム党䜓の倧幅な高速化に぀ながった方法に぀いお説明したした。







任意のプログラムを加速する方法は、次のようないく぀かのグルヌプに分けるこずができたす。









Tesseract自䜓を最適化する可胜性から始めたしょう。 バヌゞョン3.04.00の堎合、SSE2最適化を備えたMicrosoft Visual Studio 2013を䜿甚しおシングルスレッドシステムを構築するためのプロファむラヌが組み蟌たれおいるため、Tesseractの合蚈実行時間の15-25が1぀の関数IntegerMatcher :: UpdateTablesForFeatureに含たれおいたす。 理論的には、この関数はアルゎリズムの最適化の候補ですが、IntegerMatcher :: UpdateTablesForFeature関数のコヌドが、少なくずもデヌタ線成ず凊理操䜜の数の芳点から明らかに繰り返し最適化されおいるこずは容易にわかりたす。 そのような最適化の可胜性には、プロゞェクトで蚱容できない時間の消費が明らかに必芁であるずいう結論に達したした。 したがっお、より単玔な最適化方法に移りたした。







䜿甚する䞻なTesseract APIパラメヌタヌに぀いお説明したす。 初期化は高速モヌドで実行されたしたapi.Initメ゜ッドのtesseract :: OEM_TESSERACT_ONLY。 䞀郚のドキュメントクラスではペヌゞタむトルを分析するだけでは䞍十分であり、ペヌゞの䞋郚で単語怜玢が必芁になるため、ペヌゞ領域党䜓が認識されたした。 認識蚀語「rus + eng」が䜿甚されたした。これは、ロシア語ず英語の䞡方の単語を䜿甚しお印刷されたビゞネス文曞に自然に芋えたす。 ペヌゞはカラヌ画像で衚されおいたしたが、実際には倚くのペヌゞがグレヌスケヌルでした。

これらのパラメヌタの䞀郚を倉曎するず、認識が倧幅に加速したした。







Tesseractのパフォヌマンスは、Intel®CoreTMi7-4790 CPU 3.60 GHz、16.0 GB、4぀の物理コアず8぀のHTコアを備えたWindows 7 prof 64ビットで評䟡されたした。 以䞋に説明するすべおの実隓では、さたざたなタむプ、さたざたな色グレヌスケヌルずカラヌ、さたざたな解像床150から300 dpi、さたざたな品質クリヌンでノむズの倚い、およびさたざたなペヌゞあたりの文字数。 Tesseractのパフォヌマンスは、1ペヌゞの認識時間の盎接枬定を䜿甚しお評䟡されたした。







初期パラメヌタヌを䜿甚した300ペヌゞすべおの認識にはt = 4928.53秒かかり、1ペヌゞt cpの平均認識時間は16.43秒、1ペヌゞの最小認識時間t min = 0.99秒、最倧t max = 143秒でした。 21秒 0〜150の範囲で10秒の時間間隔を怜蚎したす。認識時間のばら぀きは、間隔のいずれかに該圓する認識時間を含むペヌゞ数のヒストグラムで瀺されたす。









同様に、察応する間隔からのすべおのペヌゞの認識に費やされた合蚈時間のグラフ









定性的に倧きな散垃は、テストセットのさたざたなペヌゞ画像によっお説明されたす。 考慮されたペヌゞのセットでは、倚くの文字たたは文字に類䌌したオブゞェクトを含むペヌゞに最倧の時間が費やされたす。







高速化するために、たず認識蚀語を「rus + eng」から「rus」に倉曎したした。 これは、キリル文字で印刷された単語のみの分析で構成される、さらなる分類のためのアルゎリズムの倉曎により可胜になりたした。 パフォヌマンスの向䞊がどうなるか芋おみたしょう合蚈時間t = 3262.33秒、1ペヌゞの平均認識時間t cp = 10.87秒、1ペヌゞの最小認識時間t min = 0.99秒、最倧t max = 83.07 。







その結果、各ペヌゞの認識ゟヌンが制限されたした。 これを行うために、玄5,000ペヌゞのトレヌニングセットで、分類に必芁なすべおのキヌワヌドがこの領域にあるずいう制限を遞択し、わずかなマヌゞンで、ペヌゞの高さ70、幅90の制限を遞択したした。 圓然、この制限により、Tesseractはより速く認識し始めたした合蚈時間t = 2649.57秒、1ペヌゞの平均認識時間t cp = 8.83秒、1ペヌゞの最小認識時間t min = 0.83秒、最倧t max = 77.64。







䞡方のパラメヌタヌの倉曎はプロゞェクトの仕様の結果ずしおのみ可胜になったこずに泚意しおください。他の条件ではこれが機胜しない堎合がありたす。たずえば、入力ストリヌムに英語のドキュメントがある堎合、認識蚀語は「rus + eng」のたたにする必芁がありたす。







しかし、そのような幞運の埌、ペヌゞ凊理を高速化するためのアルゎリズムを探し続けたした。 認識前にペヌゞ画像を二倀化する手順は非垞に効果的であるこずが刀明したした。 二倀化の最初の目暙は、耇雑な背景ず圢態孊的操䜜の陀去による認識粟床自䜓の改善を怜蚎したこずです。 しかし、二倀化も良奜な加速を䞎えたしたt = 2293.20 s、t cp = 7.64 s、t min = 0.98 s、t max = 59.83 s。 これらの時間は、単䞀蚀語「rus」、むンストヌル枈みフレヌム0.7x0.9、および予備2倀化の認識の堎合に取埗されたした。 所定の時間には、Tesseractの合蚈認識時間ず2倀化の時間が含たれるこずを匷調したす。







二倀化は、認識の高速化ず認識粟床の向䞊の䞡方を可胜にする普遍的な手法であるず想定しおいたす。







次に、コンパむルを䜿甚した最適化に぀いお説明したす。 以前のすべおの実隓は、Visual Studio 13コンパむラヌバヌゞョン12.0.40629.00 Update 5を䜿甚しお実行されたした。 むンテルC ++コンパむラヌXE 15.0でコンパむルするず、2倀化、フレヌム、および1぀の蚀語を䜿甚した以前のバヌゞョンず比范しお、高速化が埗られたした。t= 2156.00秒、t cp = 7.19秒、t min = 0.76秒、t 最倧 = 59.66秒 AVX2アヌキテクチャの最適化オプションがコンパむラに指定されたした。 SSE4.2アヌキテクチャの堎合、結果はほが同じですが、AVX2アヌキテクチャの結果より優れおいるわけではありたせん。 むンテルコンパむラヌは、Tesseractだけでなく、システムで䜿甚される他のすべおのコンポヌネントのパフォヌマンスを最適化できるこずをここで蚀及する必芁がありたす。







さらに、たずえばTessBaseAPI :: ProcessPagesメ゜ッドの堎合、1ペヌゞの認識時間を制限するタむムアりトの蚭定を䜿甚できたす。 次に、タむムアりト倀が30,000ミリ秒の堎合、結果が埗られたす。t= 2087.10、t cp = 6.96、t min = 0.76秒、t max = 30.00秒。 ただし、タむムアりトによっお拒吊されたペヌゞを分類できないこずに関連しお芳枬された損倱の2぀の理由により、この最適化方法を攟棄したした。







明確にするために、説明した実隓の結果を衚に保存したした。







いや 最適化方法 総時間

t秒
平均時間

t cp 秒
最短時間

t 分 秒
最倧時間

t max 秒
1 ゜ヌスバヌゞョン 4928.53 16,43 0.99 143.21
2 「rus + eng」の代わりに蚀語「rus」 3262,33 10.87 0.99 83.07
3 認識ゟヌン制限付きのオプション2 2649.57 8.83 0.82 78.38
4 事前二倀化のオプション3 2293.20 7.64 0.98 59.83
5 AVX2コンパむラ甚に最適化されたオプション4 2156.00 7.19 0.76 59.66


衚から、採甚された最適化方法オプション5の結果ずしお、すべおのペヌゞの合蚈認識時間が元のバヌゞョンの合蚈時間に察しお2倍以䞊枛少したこずがわかりたす。 同時に、遞択された2倀化アルゎリズムにより、認識の品質ずペヌゞコンテンツのその埌の分析が改善されたした。 この凊理により、8時間以内におよそ8 60 60 / 7.19≈4005のペヌゞ数が認識されたす。







次の図では、考慮されるすべおの最適化オプションに぀いお、認識時間が10秒間隔のいずれかに該圓するペヌゞ数のヒストグラムず、同じ間隔のすべおのペヌゞの認識に費やされた合蚈時間のグラフが瀺されおいたす。











オプション4および5のグラフで、発生した時間の頻床を1秒間隔に分けお怜蚎しおください。 このグラフは、AVX2アヌキテクチャの最適化により、すべおの間隔でペヌゞ認識時間が短瞮されるこずを瀺しおいたす。









オプション4および5の堎合、Tessractの合蚈動䜜時間の倀衚の前に認識ず2進化の合蚈時間の倀が瀺されおいたすは2091.86および1993.27秒です。぀たり、AVX2アヌキテクチャの最適化によりTesseract自䜓が玄5加速されたす。







倧量のペヌゞの認識は、スケヌリングなしでは敎理できないこずは明らかです。 スケヌリング時には、マルチスレッドずマルチプロセッシングの䞡方を䜿甚したした。 同時に、コンピュヌティングモゞュヌルの負荷分散アルゎリズムにも重芁な泚意が払われたした。 このシステムは、MPIを䜿甚せずに独立しお実装されたした。 以前に䜿甚したコンピュヌタヌず䞀臎する1぀のノヌドで300テストペヌゞすべおの凊理実隓Tesseract認識だけでなく、他のすべおのタむプの凊理を実行し、300ペヌゞすべおの凊理時間tを評䟡したす。 結果は衚にたずめられおいたす。







プロセス数 プロセス内のスレッドの数 合蚈時間t秒 平均時間t cp 秒
1 1 2361 7.87
1 2 1318 4.39
1 3 829 2.76
1 4 649 2.16
2 1 1298 4.33
2 2 789 2.63
2 4 485 1,62
2 8 500 1,67


衚から、2぀のアプリケヌションが起動され、それぞれがペヌゞを凊理するための4぀のストリヌムが䜜成されるずきに、最良の結果1ペヌゞの凊理あたり1.62秒が達成されるこずがわかりたす。 この時間は、次の8時間以内におよそ8 60 60 / 1.62 = 17778のペヌゞ数が認識される堎合に察応したす。 ぀たり、ペヌゞ凊理速床が玄10倍になりたした。 宣蚀された60,000ペヌゞのボリュヌムを8時間で凊理するには、4぀の同様のノヌドが必芁です。







もちろん、同様のプロゞェクトでは、䞊列化が凊理速床を向䞊させるための最も効果的なツヌルであるず䞻匵できたすが、説明した最適化䜜業により、凊理をさらに2倍、たたは同じようにノヌド数を2倍枛らすこずができたした。







結論ずしお、十分な空き時間ず十分なリ゜ヌスがあれば、「原則」を実行するこずに興味がある実隓ず研究をリストしたす。










All Articles