ѕ получены отзывы по работе бета-версии приложения относительно удобства работы с интерфейсом, которые были учтены в финальной версии приложения
3.2 Описание стратегий дальнейшего развития приложения
Несмотря на то, что созданное в рамках данной работы приложение представляет собой готовый к использованию программный продукт для распознавания информации на визитных карточках, его также следует рассматривать как базовый прототип для дальнейшей работы. За время работы над проектом, а также в процессе тестирования бета-версии приложения были выявлено несколько возможных вариантов для дальнейшей разработки приложения.
Прежде всего, данное приложение обладает большим потенциалом в плане повышения точности распознаваемого текста. В процессе работы над данным проектом изображение передавалось в модуль распознавания напрямую с камеры устройства, что приводит к появлению на изображении достаточно большого числа помех, которые мешают эффективному распознаванию. Поэтому внедрение технологий предобработки изображений (выявление наиболее важной части, устранение шумов программными средствами) представляется одним из самых перспективных направлений дальнейшей работы.
Другим аспектом приложения, который может изменён при дальнейшем развитии является использование сторонних моделей для распознавания и анализа текста. Такой подход, безусловно, является преимуществом для небольших проектов и полностью отвечает требованиям, сформулированным в рамках данной исследовательской работы. Однако, по мере развития функционала приложения и увеличения пользовательской базы это может стать существенным ограничением. Поэтому разработка собственного подхода (создание модели нейронной сети) к распознаванию и классификации текста должна учитываться в процессе дальнейшего развития приложения.
Ещё одним вариантом развития приложения может служить добавление нового функционала, который позволит расширить круг задач, решаемых с помощью этого приложения и вывести его на уровень полноценных интегрированных решений для бизнеса. Так, например, можно провести интеграцию приложения в социальные сети для быстрого поиска человека из контактов или связать карточку контакта с календарём для отслеживания информации о встречах.
сканирование визитный карточка интерфейс
Заключение
В настоящей работе рассмотрены различные теоретические подходы к распознаванию и классификации информации на визитных карточках и проанализированы существующие решения в данной области. Проведен теоретический анализ литературы по теме оптического распознавания символов и извлечения именованных сущностей. Рассмотрены различные подходы к созданию мобильного приложения в данной области.
Практическим результатом данной исследовательской работы стало создание полностью работоспособного прототипа мобильного приложения для распознавания и классификации информации на визитных карточках. Приложение написано на базе платформы Android с использованием языка программирования Kotlin. Ознакомиться с исходным кодом разработанного в рамках данного проекта приложения можно на веб-сервисе GitHub в репозитории [16].
Представленное приложение является уникальным в своей сфере применения. Конкурентными преимуществами приложения, по сравнению с существующими в открытом доступе реализациями, является поддержка нескольких языков, возможность работы без соединения с сетью, а также пользовательский интерфейс, выполненный в соответствии с правилами документации концепта Material Design.
Проведённое экспериментальное тестирование прототипа программного продукта продемонстрировало стабильную работу приложения, его соответствие изначально заявленным требованиям, и позволяет говорить о готовности к размещению приложения в публичном доступе.
Таким образом, основываясь на результатах проделанной работы, можно утверждать, что цель исследования достигнута, все поставленные задачи выполнены в полном объёме.
Список литературы
1. Dale, R. Text analytics APIs, Part 1: The bigger players. / Dale, R. // Natural Language Engineering - 2018 - Volume 24, Issue 2 - 317-324p
2. Jing, Li. A Survey on Deep Learning for Named Entity Recognition / Jing Li, Aixin Sun, Jianglei Han, Chenliang Li // Cornel University Press - 2018.
3. Holley, R. Analysing and Improving OCR Accuracy in Large Scale Historic Newspaper Digitisation Programs. / R. Holley // D-Lib Magazine - 2009. - Volume 15. - №. 3/4.
4. Kapetanios, E. Natural Language Processing. Semantic Aspects. / E. Kapetanios // CRC Press - 2013. - 298p
5. RajithKumar B.K. (2018). Real-Time Input Text Recognition System for the Aid of Visually Impaired. / B.K. RajithKumar // Switzerland: Sprinkler Nature - 2018. - 147p
6. Verma, A. OCR - optical character recognition. / Verma A., Arora S., Verma P. // International Journal of Advance Research in Science and Engineering - 2016. - Issue 9
7. Walker J.A Web-Based OCR Service for Documents. / Walker J., Fujii Y., Popat A.C. // 13th IAPR International Workshop on Document Analysis Systems. 21-23p. Vienna. 2018.
8. Design for Android
9. Documentation for android.hardware.camera2
10. Material Design. Android settings
11. Material Design. App bars: top
12. Material Design. Material Card
13. Material Design. Navigation Drawer
14. Stanford Mobile Visual Search Data Set: Business Cards
15. StatCounter. Mobile Operating System Market Share Worldwide
16. Репозиторий с открытым кодом
Приложение 1
Код класса RecognitionFragment
class RecognitionFragment : Fragment() {
private lateinit var attachedActivityContext: Context
private lateinit var activity: MainActivity
private var applicationTag = "RecognitionFragment"
private lateinit var previewBitmap: Bitmap
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is MainActivity) {
attachedActivityContext = context
activity = attachedActivityContext as MainActivity
} else {
Log.e(applicationTag, "Cannot attach fragment to activity")
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.recognition_fragment, container, false)
val bitmapFile = activity.openFileInput(BITMAP_TMP)
previewBitmap = BitmapFactory.decodeStream(bitmapFile)
val task = CardProcessor(attachedActivityContext, previewBitmap)
task.execute()
return view
}
}
Приложение 2
Код класса CardGalleryFragment
class CardGalleryFragment : Fragment() {
private var listener: OnListFragmentInteractionListener? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.card_list_fragment, container, false)
// Set the adapter
if (view is RecyclerView) {
with(view) {
layoutManager = LinearLayoutManager(context)
adapter =
CardsRecyclerViewAdapter(CardGalleryContent.ITEMS, listener)
(adapter as CardsRecyclerViewAdapter).tracker = setupTracker(view)
}
}
return view
}
private fun setupTracker(view: RecyclerView) : SelectionTracker<Long> {
return SelectionTracker.Builder<Long>(
"CardSelection",
view,
StableIdKeyProvider(view),
CardLookup(view),
StorageStrategy.createLongStorage()
).withSelectionPredicate(
SelectionPredicates.createSelectAnything()
).build()
}
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is OnListFragmentInteractionListener) {
listener = context
} else {
throw RuntimeException("$context must implement OnListFragmentInteractionListener")
}
}
override fun onDetach() {
super.onDetach()
listener = null
}
interface OnListFragmentInteractionListener {
fun onListFragmentInteraction(pos: Int)
fun onSelectedItemsChanged(tracker: SelectionTracker<Long>, adapter: CardsRecyclerViewAdapter)
}
}
Приложение 3
Краткая таблица общих тестов функций модуля сканирования и распознавания визитных карточек
|
Устройство |
Тестируемая функция |
Результат тестирования |
|
|
Honor 9 Lite LDD-L31 8.0.0.144(C10) - Android version 8.0.0 |
Авторизация в проектах Firebase ML и Google Cloud для получения токена |
Тест пройден. Успешная авторизация в 100% случаях запуска приложения (20/20 тестов) |
|
|
Перехват видеопотока с камеры устройства и его отображение в контексте модуля |
Тест пройден. Приложение успешно инициализирует видеопоток в 100% случаях запуска модуля (20/20 тестов) |
||
|
Получение фотографии с камеры устройства по нажатию кнопки «Scan» |
Тест пройден. Приложение сохраняет фотографию для обработки в 100% случаях (20/20 тестов) |
||
|
Выполнение запроса к Google Firebase ML для распознавания текста на фотографии |
Тест пройден. Приложение корректно осуществляет запрос. Время обработки ответа <2 сек. Процент корректно распознанного текста от 80% |
||
|
Инициализация модулей библиотеки Tesseract |
Тест пройден. Приложение корректно копирует файлы библиотеки во внутреннюю память устройства в 100% случаях. (20/20 тестов) |
||
|
Выполнение запроса к Tesseract для распознавания текста на фотографии |
Тест пройден частично. Приложение корректно осуществляет запрос. Время обработки ответа <5 сек. При наличии артефактов на фотографии до 10 сек. Процент корректно распознанного текста от 40-60% |
||
|
Выполнение запроса к Google Cloud Natural Language API для классификации текста по полям |
Тест пройден. Приложение корректно осуществляет запрос. Время обработки ответа <2 сек. Процент корректно классифицированного текста от 80% |
||
|
Анализ текста с помощью регулярных выражений для номера телефона и адреса электронной почты |
Тест пройден. Корректно классифицируется 90% электронных адресов и 60% номеров телефона |