Text from image android app

Создание Android приложения для распознавания текста за 10 Минут. Mobile Vision CodeLab

Видео версия туториала

Оптическое распознавание символов (англ. Optical Character Recognition, сокр. OCR) дает компьютеру возможность читать текст на изображении, позволяя приложениям понимать знаки, статьи, листовки, страницы текста, меню или что угодно в виде текста. Mobile Vision Text API предоставляет разработчикам Android мощную и надежную возможность OCR , которая поддерживает большинство устройств Android и не увеличивает размер вашего приложения.

В этом туториале вы создадите приложение, в котором в процессе видеосъёмки будет распознаваться и воспроизводиться весь текст, попадающий в кадр.

Также мы публиковали статьи о других функциях Mobile Vision:

Исходный код можно скачать тут.

Или склонировать репозиторий GitHub из командной строки:

Репозиторий visionSamples содержит много примеров проектов, связанных с Mobile Vision . В этом уроке используется только два:

  • ocr-codelab/ocr-reader-start — начальный код, который вы будете использовать в этом уроке.
  • ocr-codelab/ocr-reader-complete — полный код готового приложения. Вы можете использовать его для устранения неполадок или перейти сразу к рабочему приложению.

Обновление сервисов Google Play

Возможно, вам потребуется обновить установленную версию Google Repository , чтобы использовать Mobile Vision Text API .

Откройте Android Studio и откройте SDK Manager :

Убедитесь, что Google Repository обновлен. Он должен быть не менее 26 версии.

Добавление зависимости Google Play Services и создание приложения для запуска

Теперь можно открывать стартовый проект:

Выберите каталог запуска ocr-reader из загруженного кода (File > Open > ocr-codelab/ocr-reader-start ).

Добавьте зависимость Google Play Services к приложению. Без этой зависимости Text API не будет доступен.

Проект может указать на отсутствие файла integer/google_play_services_version и выдать ошибку. Это нормально, мы исправим это на следующем шаге.

Откройте файл build.gradle в app модуле и измените блок зависимостей, включив туда зависимость play-services-vision . Когда все будет готово, файл должен выглядеть так:

Нажмите кнопку синхронизации Gradle .

Нажмите кнопку запуска.

Через несколько секунд вы увидите экран «Read Text», но это всего лишь черный экран.

Сейчас ничего не происходит, потому что CameraSource не настроен. Давайте сделаем это.

Если у вас что-то не получается, вы можете открыть проект ocr-reader-complete и убедиться, что он работает правильно. Этот проект является готовой версией урока, и если эта версия не работает, вы должны проверить, что всё в порядке с вашим устройством и настройками Android Studio .

Настройте TextRecognizer и CameraSource

Чтобы начать работу, мы создадим наш TextRecognizer . Этот объект-детектор обрабатывает изображения и определяет, какой текст появляется внутри них. После инициализации TextRecognizer может использоваться для обнаружения текста во всех типах изображений. Найдите метод createCameraSource и создайте TextRecognizer :

Теперь TextRecognizer готов к работе. Однако, возможно, он еще не работает. Если на устройстве недостаточно памяти или Google Play Services не может загрузить зависимости OCR , объект TextRecognizer работать не будет. Прежде чем мы начнем использовать его для распознавания текста, мы должны проверить, что он готов. Мы добавим эту проверку в createCameraSource после инициализации TextRecognizer :

Теперь, когда мы проверили, что TextRecognizer готов к работе, мы можем использовать его для распознавания отдельных кадров. Но мы хотим сделать что-то более интересное: читать текст в режиме видеосъёмки. Для этого мы создадим CameraSource , который предварительно настроен для управления камерой. Нам необходимо установить высокое разрешение съёмки и включить автофокусировку, чтобы справиться с задачей распознавания небольшого текста. Если вы уверены, что ваши пользователи будут смотреть на большие блоки текста, например вывески, вы можете использовать более низкое разрешение, и тогда обработка кадров будет происходить быстрее:

Читайте также:  Fifa 22 mod fifa 14 андроид

Вот как должен выглядеть метод createCameraSource , когда вы закончите:

Если вы запустите приложение, то увидите, что началась видеосъёмка! Но для обработки изображений с камеры нам нужно дописать этот последний TODO в createCameraSource : создать Processor для обработки текста по мере его поступления.

Создание OcrDetectorProcessor

Сейчас ваше приложение может обнаруживать текст на отдельных кадрах, используя метод обнаружения в TextRecognizer . Так можно найти текст, например, на фотографии. Но для того, чтобы читать текст прямо во время видеосъёмки, нужно реализовать Processor , который будет обрабатывать текст, как только он появится на экране.

Перейдите в класс OcrDetectorProcessor реализуйте интерфейс Detector.Processor :

Для реализации этого интерфейса требуется переопределить два метода. Первый, receiveDetections , получает на вход TextBlocks из TextRecognizer по мере их обнаружения. Второй, release , используется для освобождения от ресурсов при уничтожении TextRecognizer . В этом случае нам нужно просто очистить графическое полотно, что приведёт к удалению всех объектов OcrGraphic .

Мы получим TextBlocks и создадим объекты OcrGraphic для каждого текстового блока, обнаруженного процессором. Логику их рисования мы реализуем на следующем шаге.

Теперь, когда процессор готов, мы должны настроить textRecognizer для его использования. Вернитесь к последнему оставшемуся TODO в методе createCameraSource в OcrCaptureActivity :

Теперь запустите приложение. На этом этапе при наведении камеры на текст вы увидите отладочные сообщения «Text detected!» в Android Monitor Logcat ! Но это не очень наглядный способ визуализации того, что видит TextRecognizer , правда?

На следующем шаге мы отрисуем этот текст на экране.

Рисование текста на экране

Давайте реализуем метод draw в OcrGraphic . Нам нужно понять, есть ли на изображении текст, преобразовать координаты его границ в рамки канваса, а затем нарисовать и границы, и текст.

Запустите приложение и протестируйте его на этом образце текста:

Вы должны увидеть, что на экране появляется рамка с текстом в ней! Вы можете поиграть с цветом текста, используя TEXT_COLOR .

Как насчет этого?

Рамка вокруг текста выглядит правильно, но текст находится в нижней её части.

Это связано с тем, что движок передает весь текст, который он распознает в TextBlock в виде одного предложения, даже если он видит предложение, разбитое на несколько строк. Если вам нужно получить целое предложение, то это очень удобно. Но что, если вы хотите знать, где расположена каждая отдельная строка текста?

Вы можете получить Lines из TextBlock , вызвав getComponents , а затем, перебирая каждую строку, запросто получить её местоположение и текст внутри неё. Это позволяет рисовать текст в том месте, где он действительно появляется.

Попробуйте снова этот текст:

Отлично! Вы даже можете разбивать найденный текст на ещё более мелкие составляющие, исходя из ваших потребностей. Можно вызвать getComponents на каждой строке и получить Elements (слова на латинице). Есть возможность настройки textSize , чтобы текст занимал столько места, сколько занимает реальный текст на экране.

Воспроизведение текста при нажатии на нём

Теперь текст с камеры преобразуется в структурированные строки, и эти строки отображаются на экране. Давайте сделаем с ними что-нибудь еще.

Используя TextToSpeech API , встроенный в Android , и метод contains в OcrGraphic , мы можем научить приложение говорить вслух, при нажатии на текст.

Сначала давайте реализуем метод contains в OcrGraphic . Нам просто нужно проверить, находятся ли координаты x и y в пределах рамки отображаемого текста.
OcrGraphic.java

Вы можете заметить, что здесь много общего с методом Draw ! В настоящем проекте вам следовало бы добиться переиспользования кода, но здесь мы оставим всё как есть просто ради примера.

Теперь перейдем к методу onTap в OcrCaptureActivity и обработаем нажатие по тексту, если он есть в этом месте.

Читайте также:  Драйвера для прошивки андроида через компьютер windows 10

Вы можете запустить приложение и через Android Monitor Logcat убедиться, что нажатие на текст действительно обрабатывается.

Давайте же заставим наше приложение говорить! Перейдите в начало Activity и найдите метод onCreate . При запуске приложения мы должны инициализировать движок TextToSpeech для дальнейшего использования.

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

TextToSpeech также зависим от языка распознавания. Вы можете изменить язык на основе языка распознанного текста. Распознавание языка не встроено в Mobile Vision Text API , но оно доступно через Google Translate API . В качестве языка для распознавания текста можно использовать язык устройства пользователя.

Отлично, осталось только добавить код воспроизведения текста в методе onTap .

Теперь, когда вы запустите приложение и нажмёте на обнаруженный текст, ваше устройство воспроизведёт его. Попробуйте!

Завершение

Теперь у вас есть приложение, которое может распознавать текст с камеры и проговаривать его вслух!

Полученные знания по распознаванию текста вы можете применить и в других ваших приложениях. Например, читать адреса и номера телефонов с визитных карточек, производить поиск по тексту с фотографий различных документов. Одним словом, применяйте OCR везде, где вам может потребоваться распознать текст на изображении.

Источник

How To Extract And Copy Text From an Image On Android

Here’s how to extract and copy text from an image on Android.

Sometimes we want to extract texts from an image, scanned documents, or PDF files. However, due to a lack of resources, we often end up typing the entire text. If you are using an Android device, then you can easily extract text from any image or printed materials.

For that, you need to use proper text extracting Android apps. As of now, there are plenty of Android apps available on the Play Store that lets you extract text from any image. Not only images, but these apps can also extract text from a textbook, newspapers, magazines, products, etc.

Extract And Copy Text From an Image On Android

So, in this article, we have decided to share some of the best methods to extract and copy text from any images on Android.

Using Text Fairy

Well, Text Fairy is one of the best OCR scanner app available on the Play Store. The app can be used to extract and copy text from an image. Here’s how to use it.

Step 1. Firstly, you need to download and install an Android app Text Fairy (OCR Text Scanner) the app that will help you to scan out the text from your images.

Step 2. After installing the app, just launch it on your device. You need to grant permission to access Photos, media, and files on your device.

Step 3. You will have two options either to click image to scan or select from the gallery.

Step 4. Now you need to choose the language in which you want to scan.

Select the language

Step 5. Now you have the image with text now, simply click on the Start Text recognition button, and the app will start scanning the complete picture. Wait for a few moments until the app scans for the text. Once done, it will display you the plain text which you can copy.

Scan the text

Step 6. Now after reading the text. The app will display a success message “That Went Well”. Now you will get the option to “Share”, “Copy” and Save as “PDF”.

Читайте также:  Статус selinux блокировка что это android

Select the text Copy the text

That’s it! You are done, you have successfully extracted text from the images using this app.

Using OCR Apps

Well, the above two apps listed in the article actually comes with optical character recognition tool. So, just like Text Fairy, there are plenty of others available on the Google Play Store. So, let’s check out some of the best OCR apps for Android.

1. Google Keep

It is actually a note-taking app that brings lots of interesting features. Actually, Google Keep can be used in multiple ways and it comes with built-in support for OCR. Google Keep’s extraction works pretty well and it’s very easy to use.

Features:

  • The app has built-in support for OCR.
  • With Google Notes, you can create notes and lists.
  • Google Keep also lets you access the notes saved on other devices.

2. Text Scanner

The app claims to support over 50 languages including French, Japanese, Chinese and few more. The interface of Text Scanner is also amazing and it can extract and copy text from any photos.

Features:

  • It is the best text scanner app available on the Play Store.
  • Text Scanner can scan through handwritten notes, magazines, newspapers, etc.
  • It also lets you save the extracted text on Google Drive, Google Keep, etc.

3. OCR Text Scanner

It is one of the simple OCR apps that you can use on your Android smartphone. First of all, OCR Text Scanner supports over 55 languages and it features a simplified interface. The great thing about that it works fine on documents, notepads, etc.

Features:

  • This app claims to recognize the characters from an image with 99% accuracy.
  • The app supports more than 92 languages.
  • It also allows you to translate texts to over 100+ languages.
  • OCR Text scanner also lets you edit & share the OCR results.

4. Office Lens

Microsoft’s Office Lens is another best OCR app that you should have on your Android device. The app is available in two versions – Free and Paid. The paid version brings some amazing features and users can save the extracted texts directly on OneDrive storage.

Features:

  • Office Lens from Microsoft is basically a PDF scanner app.
  • It trims, enhances, and makes pictures of whiteboard and documents readable.
  • The app can also be used to convert images to PDF, Word, and Powerpoint files.

5. Docfy Scanner

The great thing about Docfy Scanner is that it lets you export the text in PDF format. Apart from that, Docufy Scanner also has some image enhancement features like auto-detection of scan edges, auto-cropping, smart image resize, etc.

Features:

  • It is one of the powerful document scanner app available for Android.
  • With Docfy, you can scan, enhance, fax, and convert files into PDF.
  • The app is known for its high-quality and batch scans features.

6. TurboScan

Well, TurboScan is another best free document and image scanner app that you can use on your Android smartphone. The great thing about TurboScan is that it uses some advanced fast algorithms to detect document edges and its known for its ultra-fast processing.

Features:

  • It has automatic document edge detection and perspective correction.
  • The app is known for its ultra-fast processing.
  • It offers multiple editing options.
  • You can also email documents as PDF, JPEG, or PNG.

So, this article is all about how to extract and copy text from an image on Android. I hope this article helped you! Please share it with your friends also.

Источник

Оцените статью