Intereting Posts
Приложение Android onLowMemory () для API> = 14 Автономный API обнаружения ошибок в Android Ошибка при транзакции фрагмента из обработчика намерений Отображать текст уведомления в строке состояния – Android Используйте jsoup для извлечения текста из класса 'form' с переменными данными страницы Не файл DRM, открывающий notmally PDFJet-Open-source: как установить многострочный текст внутри объекта Cell TransactionTooLargeEception при попытке получить список установленных приложений Способ редактировать правила udev на Android-устройстве? Как установить пользовательский образ на пространстве между двумя CirclePageIndicator в android? Android – вызвано: android.view.ViewRootImpl $ CalledFromWrongThreadException Как переключиться между ночными режимами и темами дневного режима на Android? Когда использовать ListView вместо RecyclerView Как получить текущее местоположение для этого кода карты? Также пытаюсь получить данные о транспортных средствах с сервера, когда я открываю карту Эспрессо – проверить, какая активность открыта нажатием кнопки нажима?

Приложение для Android OCR: словарь Tesseract

Я разрабатываю приложение для Android, которое берет фотографию и преобразует ее в текст. Я использую tesseract 3 на окнах.

Мне удалось заставить большую часть перевода работать правильно (после выполнения масштабирования, бинаризации, улучшения), но какой-то символ все еще не переведен так, как должен (ri -> m, le -> Ie и т. Д.).

Чтобы исправить это, я думал о том, чтобы заставить tesseract заглянуть в словарь языка (французский в моем случае) и использовать наиболее вероятное слово для перевода. Когда я открыл французский словарь, я был удивлен, увидев все английские слова.

Есть ли способ заставить tesseract найти наиболее вероятное слово на соответствующем языке?

Кроме того, я не нашел много примеров кода для Android в Интернете, и я не уверен, что делаю наиболее эффективную предварительную обработку изображений. Это то, что я сейчас делаю, знаете ли вы, как я мог бы улучшить это еще больше?

photo = WriteFile.writeBitmap(Scale.scale(ReadFile.readBitmap(bitmap), 3, 3)); photo = WriteFile.writeBitmap(AdaptiveMap.backgroundNormMorph(ReadFile.readBitmap(photo))); photo = WriteFile.writeBitmap(Binarize.otsuAdaptiveThreshold(ReadFile.readBitmap(photo))); photo = WriteFile.writeBitmap(Enhance.unsharpMasking(ReadFile.readBitmap(photo), 3, (float) 0.5)); 

спасибо за помощь

EDIT: Например, это те результаты, которые у меня есть Фото документаРезультат фото

И результат текста:

Les действия sociales

Les actions sociales regroupent les activités suivantes: Heureux évenements + Aide for the Handicap + Aide scolarité + aide étudiante + Aide de secours, Malgré un nombre de béné fi ciaires plus important et un coat moyen par activité plus éleve qu'en 2012, т.е. бюджет 2013 alloué couvre largement Les besoins d'ou l'excédent constaté La CFTC ne peut que regretter la suppression en 2013 de I'activité «abonnement enfant» car son fianancement aurait pu étre couvert par l'excédent constaté

Спасибо 🙂

Tesseract имеет файл user.dawg, в который вы можете добавить слова, которые хотите добавить в словарь.

Но то, что я сделал бы, это запустить вывод через дополнительные проверки. Напишите программу, которая разбивает текст по пробелу, удаляет пунктуацию, а затем проверяет каждое слово в вашем словаре – если слово является точным совпадением, то это настоящее слово, если нет, то сравнивайте это слово с другими, используя расстояние Левенштейна .

Я предполагаю, что ваш словарь будет базой данных, чтобы вы могли делать другие умные вещи, вы можете просто написать запрос, который ищет точное слово (очевидно), но когда слово не найдено, используйте оператор LIKE в SQL, чтобы найти похожие слова в Выбранную вами (например, все слова, начинающиеся с одного и того же письма), поэтому вы запускаете расстояние по Левенштейну только на словах, начинающихся с того же письма (или слов, которые похожи на ваше слово так, как вы выбрали) и, таким образом, сохранения Ненужные сравнения.