4

それで、ようやくAndroid Tesseract Toolsをコンパイルすることができました。なんらかの進行状況のコールバックを気にしないことを除いて、すべてが期待どおりに機能します。ラッパー クラスとネイティブ ラッピング cpp コードを調べましたが、進行状況を処理するものは何もありませんでした。

ある種の進行状況についてTesseractをポーリングする簡単な方法はありますか? 私は Tesseract のソース コードを見てピークに達しましたが、ネイティブに Java を話す人として、それは私を怖がらせます。

進行時間に関して Tesseract がどのように可変であるかを考えると、ユーザーにスピナーを与えて 1 日と呼ぶのは良くないようです。もしそれが私で、フィードバックなしで 30 秒以上かかったとしたら、再試行するかあきらめます。

4

1 に答える 1

2

まず、OCR プロセスは大枠では「長時間実行タスク」と見なすことができるため、非同期タスクに入れます。I/O、ネットワーク、画像処理などは、メイン UI スレッドで実行したくないため、非同期タスクに配置する必要があります。ユーザーが非常に低スペックの電話を使用している場合、メイン UI スレッドにそのままにしておくと、時間がかかり、最終的にアプリケーションが応答しないというエラーが発生します。

プログレス バーに関しては、いくつかのオプションがあります。30 秒などの有限の時間制限がある場合は、OCR プロセスが 30 秒よりも速い場合は、進行状況をそれまでに設定し、早期に終了します。基礎となるネイティブ コードを利用することもできますが、おそらくその労力に見合う価値はありません...

または、私の意見では最適なアプローチは、OCR プロセスの期間中に円形のスピナーを設定します。

于 2012-06-04T13:18:05.183 に答える