Лучшая конфигурация Tess-two для получения оптимальных результатов распознавания?
В настоящее время я работаю над приложением для Android, использующим OCR-библиотеку с открытым исходным кодом "Tesseract", чтобы создать приложение для распознавания квитанций. Я получил библиотеку, работающую с "Tess-two" форком Тессеракта. У меня проблема в том, что признание очень противоречиво. Даже если хорошее изображение обрезано правильно, распознавание не очень хорошее. Я бы сказал, что, учитывая то, что я считаю идеальными ситуациями, распознавание примерно на 90%. При наличии любого числа неоптимальных условий (приглушенное освещение, размытое изображение, отсутствие обрезки и т. Д.) Я обнаружил, что часто получаю точность практически 0%.
Для целей моего приложения даже точность 90% в значительной степени неприемлема, поскольку мне нужно иметь возможность "точно" получать точную информацию и цифры из квитанции, не беспокоясь о неправильно прочитанной информации.
Поэтому мой вопрос: каков наилучший способ настроить Tess-two для получения максимально возможной точности?
В двух словах, это то, что я сделал для настройки библиотеки:
//prior to running this code, I create the directory for /tessdata and copy my eng.traineddata file in there from the app's assets folder.
baseApi.setVariable("save_best_choices", "T");
baseApi = new TessBaseAPI();
baseApi.init(DATA_PATH, "eng");
baseApi.setVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$.!?/,+=-*\"'<:&"); //I was experimenting with this to try and improve accuracy, it didn't seem to help tremendously.
baseApi.setImage(photo);//photo is a bitmap that is selected from the phone's gallery.
String tmp = baseApi.getUTF8Text();
Есть ли что-то, что я делаю не так, или что я могу быть лучше? Есть ли какие-либо файлы, кроме eng.traineddata, которые я должен включить? Я знаю, что для каждого языка есть несколько файлов, но, честно говоря, я не мог понять, что к чему, и что на самом деле нужно было включить. Из того, что я мог собрать, я получил единственный файл, который был необходим. Существуют ли какие-либо другие настройки, которые я мог бы / должен изменить с помощью функции "setVariable"?
Кроме того, есть ли у Tess-two встроенная поддержка "наклона" изображений или регулировка контрастности предоставляемых изображений? Я не слишком много испортил ни одну из этих техник, но это, вероятно, помогло бы, верно?
Любая помощь приветствуется!
1 ответ
Если ваше приложение для Android должно рассчитывать на словарные слова, взгляните на алгоритм Minimum Edit Distance и примените его к результатам, предоставленным tesseract.