Tesseract.js を使用した時にはまった挙動のメモです。
Tesseract.js を使用したOCR機能を持ったWebツールを作っていたのですが、iPhoneからOCRを実行すると「initializing API 100%」から進捗が進まなくなり、recognize textのステップに進まず、そのままずっと固まるようになってしまいました。
止まりの原因を調べてみると、以下のように日本語のホワイトリストを渡していたのが原因のようでした。どうやらこの指定があるとiPhoneでは「initializing API」の後の進捗が進まなくなってしまうようです。PCからは動作するのでハード(メモリとかスペック)に依存するのかもしれません。
whitelist = "あいうえお"; // 実際は数百文字
Tesseract
.recognize(image, {
lang: "jpn",
tessedit_pageseg_mode: "RAW_LINE",
tessedit_char_whitelist: whitelist,
})
.progress(ocrProgressFunc)
.then(ocrResultFunc);
英語で小さいホワイトリストを渡した時はうまく動作するので、単純に長いホワイトリストだとハードスペック次第では初期化に異常に時間がかかってしまうのかもしれません。仕方ないのでホワイトリストを空にして凌ぐことにしました。
Tesseract
.recognize(image, {
lang: "jpn",
tessedit_pageseg_mode: "RAW_LINE",
tessedit_char_whitelist: "",
})
.progress(ocrProgressFunc)
.then(ocrResultFunc);