Какой файл получается после сканирования текста, если распознавание текста не производилось
Обновлено: 21.11.2024
Если вы работаете в офисе, оборудованном сканером документов, вы обязательно использовали PDF. И, возможно, вы знакомы с лучшим другом PDF, его аббревиатурным родственником, OCR или оптическим распознаванием символов.
Но что такое OCR? Почему это выгодно для PDF-файлов? В этой статье рассматривается, что такое OCR, и раскрываются наиболее популярные варианты использования.
Программное обеспечение OCR стало проще
Мгновенное преобразование старых печатных документов в машиночитаемые данные.
Попробуйте Docparser бесплатно. Кредитная карта не требуется.
Содержание
История технологии распознавания текста
Из мозга Эмануэля Голдберга
Самое раннее использование оптического распознавания символов восходит к телеграфным технологиям и устройствам чтения для слепых.
Эмануэль Голдберг изобрел устройство, похожее на OCR. Он считывал символы и преобразовывал их в стандартный телеграфный код.
Примерно в то же время Эдмунд Фурнье д'Альб изобрел оптофон. Как и изобретение Голдберга, это был портативный сканер, который производил тона, соответствующие определенным буквам или символам, при перемещении по странице.
В конце 1920-х – начале 1930-х годов Голдберг разработал машину для поиска в архивах микрофильмов с использованием оптического распознавания кода. Он назвал это своей «Статистической машиной». В 1931 году он запатентовал это изобретение, которое позже приобрела IBM.
Адаптация Курцвейла
Рэй Курцвейл основал компанию Kurzweil Computer Products Inc. в 1974 году, разработав Omni-font OCR — технологию, позволяющую распознавать текст, напечатанный с использованием большинства шрифтов. Хотя многошрифтовое распознавание символов часто приписывают Курцвейлу, компании использовали его задолго до этого.
Курцвейл считал, что лучшее применение технологии оптического распознавания символов предназначено для слепых — компьютер для чтения текста вслух. Устройство требовало двух вспомогательных технологий: планшетного ПЗС-сканера и синтезатора речи. Курцвейл представил готовый продукт 13 января 1976 года во время пресс-конференции. В 1978 году Kurzweil Computer Products выпустила коммерческую версию компьютерной программы OCR. Один из ее первых клиентов, LexisNexis, купил программу для загрузки юридических документов и новостных документов в свои онлайновые базы данных. На волне успеха Курцвейл продал свою компанию Xerox. В конце концов компания выделилась как Scansoft, а затем объединилась с Nuance Communications.
Перенесемся в 2000-е годы, распознавание текста стало доступно в Интернете как услуга, в облачной среде и в мобильных приложениях (вспомните онлайн-переводы на иностранные языки).
Благодаря изобретению смартфонов и смарт-очков OCR можно использовать для различных приложений, которые извлекают текст, снятый с помощью камеры устройства. Устройства без возможностей OCR используют API OCR для извлечения текста из файла изображения, захваченного и предоставленного устройством. API возвращает извлеченный текст в приложение устройства для дальнейшей обработки.
Важную информацию об использовании этих информативных методов и о том, как они соотносятся с нормативными критериями успеха WCAG 2.1, см. в разделе Методы понимания критериев успеха WCAG. В разделе «Применимость» объясняется область применения метода, и наличие методов для конкретной технологии не означает, что эту технологию можно использовать во всех ситуациях для создания контента, соответствующего WCAG 2.1.
Применимость
Отсканированные PDF-документы
Этот метод относится к:
Описание
Целью этого метода является обеспечение того, чтобы визуально визуализированный текст был представлен таким образом, чтобы его можно было воспринимать без визуального воздействия на его читабельность.
Документ, состоящий из отсканированных изображений текста, по своей сути недоступен, поскольку документ содержит изображения, а не текст, доступный для поиска. Вспомогательные технологии не могут читать или извлекать слова; пользователи не могут выбирать, редактировать, изменять размер или переформатировать текст, а также изменять цвет текста и фона; и авторы не могут изменять PDF для обеспечения доступности.
По этим причинам авторам следует использовать фактический текст, а не изображения текста, используя инструмент разработки, такой как Microsoft Word или Oracle Open Office, для создания и преобразования контента в PDF.
Если у авторов нет доступа к исходному файлу и инструменту разработки, отсканированные изображения текста можно преобразовать в PDF с помощью оптического распознавания символов (OCR). Затем Adobe Acrobat Pro можно использовать для создания доступного текста.
Примеры
Пример 1. Генерация фактического текста, а не изображений текста с помощью Adobe Acrobat 9 Pro
В этом примере показан Adobe Acrobat Pro. Существуют и другие программные средства, выполняющие аналогичные функции. См. список других программных инструментов в .
В этом примере используется простое отсканированное изображение текста на одну страницу. Чтобы обеспечить сохранение фактического текста в документе, выполните следующие действия:
- Сканируйте документ с максимально возможным разрешением, чтобы повысить эффективность распознавания текста.
- Загрузите отсканированный документ в Acrobat Pro. Выберите «Документ» > «Распознавание текста OCR» > «Распознать текст с помощью OCR».
- В следующем диалоговом окне выберите переключатель "Все страницы" в разделе "Страницы" (или "Текущая страница", если вы конвертируете только одну страницу), а затем нажмите кнопку "ОК".
- В списке "Настройки" выберите "Изменить". В следующем диалоговом окне выберите «Форматированный текст и графика» в раскрывающемся списке «Стиль вывода PDF». Это важно для обеспечения доступности.
- В зависимости от разрешения и четкости текста OCR преобразует изображения слов и символов в текст. Текст, который Acrobat Pro не распознает, указан как «подозрительный OCR» или текстовый элемент, который, как подозревает Acrobat, был распознан неправильно.
- Чтобы исправить подозреваемых, выберите «Документ» > «Распознавание текста OCR» > «Найти первый подозрительный OCR». Acrobat Pro представляет каждого подозреваемого по одному, что можно исправить с помощью инструментов редактирования Acrobat Pro.
- Выберите «Дополнительно» > «Универсальный доступ» > «Добавить теги в документ».
- Проверка доступности: "Дополнительно" > "Специальные возможности" > "Полная проверка".
Кроме того, вы можете использовать Документ > Распознавание текста OCR > Найти все подозрительные OCR, чтобы отобразить все подозрительные OCR одновременно для более быстрого редактирования.
На следующем изображении показан отсканированный одностраничный документ в Adobe Acrobat Pro.
Рис. 1. Отсканированная страница в Acrobat Pro с рецептами супов.
На следующем изображении показано преобразованное содержимое после добавления тегов в документ. Вероятно, потребуется использовать инструмент «Порядок чтения TouchUp» и панель «Теги», чтобы правильно пометить содержимое для предполагаемого окончательного документа. В этом примере изображение спирального переплета книги было помечено при преобразовании. Инструмент TouchUp Reading Order использовался для скрытия изображения в качестве фонового (декоративного) изображения (см. ). Названия рецептов были помечены как заголовки первого уровня.
Рис. 2. Преобразованная страница с тегами в Acrobat Pro, на которой показаны рецепты супов. Название каждого супа является заголовком первого уровня. Изображение спирального переплета книги было скрыто как декоративное изображение.
Примечание. Acrobat Pro может автоматически добавлять теги при прогоне файла через OCR.
Ресурсы
Ресурсы предназначены только для информационных целей, одобрение не подразумевается.
Связанные методы
Тесты
Процедура
Для каждой страницы, преобразованной в текст с помощью OCR, убедитесь, что полученный PDF-файл был преобразован правильно одним из следующих способов:
Запуск модулей OCR для выполнения действий, связанных с распознаванием текста
Начало работы с OCR
Power Automate позволяет пользователям считывать, извлекать и управлять данными в различных файлах с помощью оптического распознавания символов (OCR).
Чтобы создать модуль OCR и извлечь текст из изображений и документов с помощью OCR, используйте действие Извлечь текст с помощью OCR. На рисунке ниже движок создан только для этого действия, а источником OCR является локально сохраненное изображение. Действие настроено на извлечение текста из всего изображения. Power Automate поддерживает как механизм распознавания текста Windows, так и механизм Tesseract.
Действие, в котором создается механизм OCR, содержит настройки механизма. К ним относятся язык и множители ширины и высоты изображения. Переменная механизма OCR может использоваться в любом действии, содержащем возможности OCR.
Множители изображения увеличивают размер изображения, чтобы сделать поиск и извлечение текста более эффективным. Обратите внимание, что установка значений больше 3 может привести к ошибочным результатам.
Использование механизма оптического распознавания символов Windows
Подсистемой по умолчанию для всех действий OCR в Power Automate является подсистема OCR Windows. Чтобы извлечь любой текст с помощью механизма распознавания текста Windows, вам необходимо установить соответствующий языковой пакет для языка, который вы хотите извлечь.
Если соответствующий языковой пакет не установлен, Power Automate выдаст сообщение об ошибке с предложением установить его. Дополнительные сведения о загрузке и установке языковых пакетов см. в разделе Языковые пакеты для Windows.
После установки соответствующего языкового пакета расширьте настройки модуля OCR действия OCR и выберите нужный язык. Механизм распознавания текста Windows поддерживает 25 языков: китайский (упрощенный и традиционный), чешский, датский, голландский, английский, финский, французский, немецкий, греческий, венгерский, итальянский, японский, корейский, норвежский, польский, португальский, румынский, русский, сербский. (кириллица и латиница), словацкий, испанский, шведский и турецкий.
Использование механизма распознавания текста Tesseract
Помимо механизма OCR Windows, Power Automate поддерживает механизм Tesseract. Этот движок может без дополнительной настройки извлекать текст на пяти языках: английском, немецком, испанском, французском и итальянском.
Чтобы извлечь текст на языке, не входящем в указанный список, включите параметр «Использовать другие языки» в настройках модуля OCR действия OCR. Если этот параметр включен, действие отображает два дополнительных параметра: поля Аббревиатура языка и Путь к данным языка.
Поле «Аббревиатура языка» указывает механизму, какой язык искать во время распознавания текста. Поле «Путь к языковым данным» содержит файлы языковых данных (.traineddata), используемые для обучения модуля OCR. Вы можете найти файлы языковых данных для всех доступных языков в этом репозитории GitHub.
Ядро Tesseract также можно использовать для извлечения текста из многоязычных документов. Дополнительную информацию об извлечении текста из многоязычных документов можно найти в разделе Выполнение оптического распознавания символов в многоязычных документах.
Чтобы использовать механизм распознавания текста Tesseract, убедитесь, что ЦП машины поддерживает набор инструкций AVX2.
Действия OCR
Если текст на экране (OCR)
Отмечает начало условного блока действий в зависимости от того, появляется данный текст на экране или нет, с помощью OCR
Входные параметры
Аргумент | Необязательный | Допускается | Значение по умолчанию | Описание |
---|---|---|---|---|
Если текст | Н/Д | Существует, Не существует | Существует | Указывает, следует ли проверять наличие текста в данном источнике для анализа |
Тип механизма распознавания | Нет | < td>Подсистема OCR Windows, подсистема Tesseract, переменная подсистемы OCRПеременная подсистемы OCR | Тип используемой подсистемы OCR. Выберите предварительно настроенный модуль OCR или настройте новый. | |
Переменная механизма OCR | Нет | OCREngineObject | Ядро, используемое для операции OCR td> | |
Текст для поиска | Нет | Текстовое значение | Текст для поиска в указанном источнике td> | |
Является ли регулярным выражением | Н/Д | Логическое значение | False | Указывает следует ли использовать регулярное выражение для поиска указанного текста |
Поиск текста на | Н/Д | Весь экран, передний план окно | Весь экран | Указывает, следует ли искать указанный текст на всем видимом экране или только в окне переднего плана |
Поиск режим | Н/Д | Весь указанный источник, Только определенный субрегион, Субрегион относительно изображения | Весь указанный источник | Указывает следует ли сканировать весь экран (или окно) или его суженную часть |
Изображения(я) | Нет | Список изображений | И маг(и), указывающие субрегион (относительно левого верхнего угла изображения) для сканирования предоставленного текста | |
X1 | Да | Числовое значение | Начальная координата X субрегиона для сканирования предоставленного текста | |
Допуск | Да< /td> | Числовое значение | 10 | Указывает, насколько искомые изображения могут отличаться от исходного выбранного изображения |
Y1 | Да | Числовое значение | Начальная координата Y субрегиона для сканирования предоставленного текста | |
X1 | Да | Числовое значение | Начальная координата X субрегиона относительно указанного изображения для сканирования предоставленного текста< /td> | |
X2 | Да | Числовое значение | Конечная координата X субрегиона для сканирования предоставленного текст | |
Y1 | Да | Числовое значение | Начальная координата Y субрегиона относительно указанный образ e для поиска предоставленного текста | |
Y2 | Да | Числовое значение | Конечная координата Y субрегиона для поиска предоставленного текста | |
X2 | Да | Числовое значение | Конец Координата X субрегиона относительно указанного изображения для сканирования предоставленного текста | |
Y2 | Да | Числовое значение td> | Конечная координата Y субрегиона относительно указанного изображения для сканирования предоставленного текста | |
Язык распознавания символов Windows | Н/Д | Китайский (упрощенный), китайский (традиционный), чешский, датский, голландский, английский, финский, французский, немецкий, греческий, венгерский, итальянский, японский, корейский, норвежский, польский, португальский, румынский, русский , сербский (кириллица), сербский (латиница), словацкий, испанский, шведский, турецкий | английский | Язык текста, который обнаруживает механизм распознавания текста Windows | tr>
Использовать другой язык | Н/Д | Логическое значение | False | Указывает, следует ли использовать язык, не указанный в поле «Язык Tesseract» |
Язык Tesseract | Н/Д< /td> | Английский, немецкий, испанский, французский, итальянский | Английский | Язык текста, который обнаруживает механизм Tesseract |
Аббревиатура языка | Нет | Текстовое значение | Аббревиатура Tesseract используемого языка. Например, если данные «eng.traineddata», установите для этого параметра значение «eng» | |
Путь к языковым данным | Нет | Текстовое значение | Путь к папке, содержащей данные Tesseract для указанного языка | |
Множитель ширины изображения | Нет | Числовое значение | 1 | Множитель ширины изображения |
Множитель высоты изображения | Нет | Числовое значение | 1 | Множитель высоты изображения |
Созданные переменные
Аргумент | Тип | Описание |
---|---|---|
LocationOfTextFoundX td> | Числовое значение | Координата X точки, где текст появляется на экране. Если поиск выполняется в окне переднего плана, возвращаемые координаты относятся к верхнему левому углу окна |
LocationOfTextFoundY | Числовое значение | Координата X точки, где текст появляется на экране. Если поиск выполняется в окне переднего плана, возвращаемые координаты относятся к верхнему левому углу окна |
Исключения
Исключение | Описание |
---|---|
Невозможно проверить, существует ли текст в неинтерактивном режиме | Указывает, что невозможно проверить текст на экране в неинтерактивном режиме |
Недопустимые координаты субрегиона | < td>Указывает, что указанные координаты субрегиона недействительны|
Не удалось проанализировать текст с помощью OCR | Указывает, что произошла ошибка при попытке проанализировать текст с помощью OCR< /td> |
Не удалось создать модуль OCR | Указывает на ошибку при попытке создать модуль OCR |
Папка пути к данным не существует | Указывает, что папка, указанная для языковых данных, не существует |
Выбранный языковой пакет Windows не установлен на машине | Указывает, что выбранный языковой пакет Windows не был установлен на машине |
Ядро OCR не работает | Указывает, что OCR движок не работает |
Дождаться появления текста на экране (OCR)
Подождите, пока определенный текст не появится/не исчезнет на экране, в окне переднего плана или относительно изображения на экране или в окне переднего плана с помощью OCR
Входные параметры
Аргумент | Необязательно | Допускается | Значение по умолчанию | Описание |
---|---|---|---|---|
Подождите, пока текст | Н/Д | Появится, исчезнет | Появится | Указывает, следует ли ожидать появления или исчезновения текста |
Тип механизма распознавания | Нет | Система распознавания текста Windows, Механизм Tesseract, переменная механизма OCR | Переменная механизма OCR | Используемый тип механизма OCR. Выберите предварительно настроенный модуль OCR или настройте новый. |
Переменная механизма OCR | Нет | OCREngineObject | Ядро, используемое для операции OCR td> | |
Текст для поиска | Нет | Текстовое значение | Текст для поиска в указанном источнике td> | |
Является ли регулярным выражением | Н/Д | Логическое значение | False | Указывает следует ли использовать регулярное выражение для поиска указанного текста |
Поиск текста на | Н/Д | Весь экран, передний план окно | Весь экран | Указывает, следует ли искать указанный текст на всем видимом экране или только в окне переднего плана |
Поиск режим | Н/Д | Весь указанный источник, Только определенный субрегион, Субрегион относительно изображения | Весь указанный источник | Указывает следует ли сканировать весь экран (или окно) или его суженную часть |
Изображения(я) | Нет | Список изображений | И маг(и), указывающие субрегион (относительно левого верхнего угла изображения) для сканирования предоставленного текста | |
X1 | Да | Числовое значение | Начальная координата X субрегиона для сканирования предоставленного текста | |
Допуск | Да< /td> | Числовое значение | 10 | Указывает, насколько искомые изображения могут отличаться от исходного выбранного изображения |
Y1 | Да | Числовое значение | Начальная координата Y субрегиона для сканирования предоставленного текста | |
X1 | Да | Числовое значение | Начальная координата X субрегиона относительно указанного изображения для сканирования предоставленного текста< /td> | |
X2 | Да | Числовое значение | Конечная координата X субрегиона для сканирования предоставленного текст | |
Y1 | Да | Числовое значение | Начальная координата Y субрегиона относительно указанный образ e для поиска предоставленного текста | |
Y2 | Да | Числовое значение | Конечная координата Y субрегиона для поиска предоставленного текста | |
X2 | Да | Числовое значение | Конец Координата X субрегиона относительно указанного изображения для сканирования предоставленного текста | |
Y2 | Да | Числовое значение td> | Конечная координата Y субрегиона относительно указанного изображения для сканирования предоставленного текста | |
Язык распознавания символов Windows | Н/Д | Китайский (упрощенный), китайский (традиционный), чешский, датский, голландский, английский, финский, французский, немецкий, греческий, венгерский, итальянский, японский, корейский, норвежский, польский, португальский, румынский, русский , сербский (кириллица), сербский (латиница), словацкий, испанский, шведский, турецкий | английский | Язык текста, который обнаруживает механизм распознавания текста Windows | tr>
Использовать другой язык | Н/Д | Логическое значение | False | Указывает, следует ли использовать язык, не указанный в поле «Язык Tesseract» |
Язык Tesseract | Н/Д< /td> | Английский, немецкий, испанский, французский, итальянский | Английский | Язык текста, который обнаруживает механизм Tesseract |
Аббревиатура языка | Нет | Текстовое значение | Аббревиатура Tesseract используемого языка. Например, если данные «eng.traineddata», установите для этого параметра значение «eng» | |
Путь к языковым данным | Нет | Текстовое значение | Путь к папке, содержащей данные Tesseract для указанного языка | |
Множитель ширины изображения | Нет | Числовое значение | 1 | Множитель ширины изображения |
Множитель высоты изображения | Нет | Числовое значение | 1 | Множитель высоты изображения |
Ошибка с ошибкой тайм-аута | Н/Д | Логическое значение | False | Укажите, хотите ли вы, чтобы действие ждало неопределенное время или завершалось неудачно по истечении заданного периода времени |
Созданные переменные
Аргумент | Тип | Описание |
---|---|---|
LocationOfTextFoundX td> | Числовое значение | Координата X точки, где текст появляется на экране. Если поиск выполняется в окне переднего плана, возвращаемые координаты относятся к верхнему левому углу окна |
LocationOfTextFoundY | Числовое значение | Координата X точки, где текст появляется на экране. Если поиск выполняется в окне переднего плана, возвращаемые координаты относятся к верхнему левому углу окна |
Исключения
Извлечение текста с помощью OCR
Извлечение текста из заданного источника с помощью заданного механизма OCR
Входные параметры
Аргумент | Необязательный | Допускается | Значение по умолчанию | Описание |
---|---|---|---|---|
Подсистема OCR | Нет | Подсистема OCR Windows, подсистема Tesseract, переменная подсистемы OCR | Подсистема OCR переменная | Тип механизма OCR для использования. Выберите предварительно сконфигурированный механизм OCR или настройте новый. |
Переменная механизма OCR | Нет | OCREngineObject | < td>Ядро, используемое для операции OCR||
Источник OCR | Н/Д | Экран, Окно переднего плана, Изображение на disk | Экран | Источник изображения для выполнения операции OCR |
Путь к файлу изображения | Нет | Файл | Путь к изображению для выполнения операции распознавания | |
Режим поиска | Н/Д | Весь указанный источник, Только определенный субрегион, Субрегион относительно изображения | Весь указанный источник | Выбранный режим для операции OCR< /td> |
Изображение | Нет | Список изображений | Изображение, используемое для сужения сканирования до субрегион, относящийся к указанному изображению | |
Допуск | Да | Числовое значение | 10 td> | Указывает, насколько изображение может отличаться от o первоначально выбранное изображение |
X1 | Да | Числовое значение | Начальная координата X субрегиона для сузить область сканирования | |
X2 | Да | Числовое значение | Конечная координата X субрегиона для сужения сканирования | |
Y1 | Да | Числовое значение | Начальная координата Y субрегион для сужения области сканирования | |
Y2 | Да | Числовое значение | Конечная координата Y субрегион для сужения сканирования | |
Язык распознавания текста Windows | Н/Д | Китайский (упрощенный), китайский (традиционный) , чешский, датский, голландский, английский, финский, французский, немецкий, греческий, венгерский, итальянский, японский, корейский, норвежский, польский, португальский, румынский, русский, сербский (кириллица), сербский (латиница), словацкий, испанский, шведский , Турецкий | Английский | Язык текста, который распознает механизм распознавания текста Windows |
Использовать другой язык | Н/Д | Логическое значение | False | Указывает, использовать ли язык, не указанный в поле «Язык Tesseract» |
Язык Tesseract | Н/Д | Английский, немецкий, испанский, французский, итальянский | Английский | Язык текста, который обнаруживает механизм Tesseract |
Аббревиатура языка | Нет | Текстовое значение | Аббревиатура используемого языка Tesseract. Например, если данные «eng.traineddata», установите для этого параметра значение «eng» | |
Путь к языковым данным | Нет | Текстовое значение | Путь к папке, содержащей данные Tesseract для указанного языка | |
Множитель ширины изображения | Нет | Числовое значение | 1 | Множитель ширины изображения |
Множитель высоты изображения | Нет | Числовое значение | 1 | Множитель высоты изображения |
Планируется, что параметр переменной механизма OCR будет прекращен.
Добро пожаловать в новый туториал, в котором мы собираемся обсудить две довольно интересные, связанные и взаимосвязанные концепции; как сканировать изображения и выполнять на них распознавание текста. Это может показаться сложной задачей, но вскоре вы обнаружите, что это далеко не так. Благодаря фреймворку Vision выполнение сканирования и распознавания текста в настоящее время является довольно простой задачей.
Давайте кратко рассмотрим несколько деталей, касающихся обеих задач. Для сканирования изображений с помощью устройства платформа VisionKit предоставляет для этой цели специальный класс с именем VNDocumentCameraViewController. Это контроллер просмотра UIKit, который позволяет сканировать одну или несколько страниц, используя предоставленный системой пользовательский интерфейс и камеру. В ответ мы получаем изображения (объекты UIImage), с которыми можем обращаться как угодно.
С отсканированными страницами, т. е. изображениями, содержащими текст, имеющимися у нас на руках, фреймворк Vision может вступить в игру. Используя отсканированные изображения в качестве входных данных, он выполняет фактическое распознавание и возвращает текст. Можно настроить несколько аспектов задачи распознавания и таким образом повлиять на общую точность и скорость процесса. Однако подробности обо всем этом будут подробно обсуждаться позже.
Все это мы собираемся реализовать с помощью небольшого приложения SwiftUI. Очевидно, мы собираемся смешать UIKit и SwiftUI, учитывая, что VNDocumentCameraViewController — это контроллер представления UIKit, но мы будем делать это и все остальное вместе и шаг за шагом.
Примечание редактора. Если вы новичок в SwiftUI, вы можете ознакомиться с нашей книгой Mastering SwiftUI.
В следующей части вы получите обзор примера приложения, над которым мы будем работать, а затем мы реализуем все, что описано выше; мы начнем со сканирования документа, а затем перейдем к распознаванию текста. Изучив это руководство, вы сможете интегрировать возможности сканирования и распознавания текста в свои собственные приложения.
Обзор демонстрационного приложения
Небольшое приложение на основе SwiftUI сегодня станет нашим средством исследования мира сканирования и распознавания текста. Чтобы сэкономить драгоценное время, существует стартовый проект, который вы должны загрузить, прежде чем двигаться дальше. Часть этого приложения уже создана, но есть и другие части, которые мы собираемся создать с нуля.
Демонстрационное приложение представляет собой навигацию с основным представлением и представлением сведений. ContentView — это основное представление, содержащее NavigationView со списком и кнопку для запуска сканирования на панели навигации. Однако вы обнаружите, что представление списка изначально отключено, и это потому, что оно содержит несколько битов кода, касающихся реализации, которой до сих пор не существует. Также по-прежнему невозможна навигация в стартовом проекте; необходимо добавить несколько недостающих частей для включения.
В конечном итоге в демо-приложении мы стремимся достичь следующего:
С помощью кнопки сканирования мы представим системный контроллер, с помощью которого мы сможем сканировать изображения. После этого все изображения будут переданы механизму распознавания текста, который мы реализуем, и начнется процесс распознавания. Часть распознанного текста из каждого изображения, которое обрабатывается, будет отображаться в списке, и, нажимая на каждый элемент, мы сможем просмотреть полный текст во втором представлении, называемом TextPreviewView.< /p>
По мере продвижения в следующих частях этой публикации мы создадим несколько новых исходных файлов, чтобы добавить новый код, а также внесем дополнения и изменения в файлы представления SwiftUI, уже существующие в начальном проекте. Взгляните на приложение сразу после его загрузки, а когда будете готовы, продолжайте читать, чтобы узнать, как представить изображение сканера.
Важное примечание. Для использования камеры и сканирования текста необходимо получить разрешение пользователя. Для этого в файл Info.plist необходимо добавить дополнительный ключ с именем NSCameraUsageDescription или в более описательной форме Privacy — Camera Usage Description. Этот ключ с описанием, почему требуется использование камеры, уже существует в стартовом проекте. Однако имейте в виду, что его отсутствие приводит к сбою приложения при использовании камеры.
Реализация сканера
Давайте начнем с реализации контроллера сканера, и для этого мы добавим в проект новый исходный файл. Нажмите Cmd+N на клавиатуре и в появившемся окне выберите шаблон файла Swift. На следующем шаге назовите файл ScannerView и завершите процесс.
Как было сказано во введении, VNDocumentCameraViewController — это контроллер представления UIKit. Чтобы использовать его в SwifUI, необходимо реализовать пользовательскую структуру, которая будет соответствовать протоколу UIViewControllerRepresentable. Прежде чем сделать это, давайте заменим инфраструктуру Foundation, добавленную по умолчанию в файл, следующими двумя:
Читайте также: