Фантастическое распознавание рукописного текста в реальном времени с помощью Vision, Apple Pencil и SwiftUI, но есть нюансы. 

Apple Pencil превратил iPad в мощный инструмент для создания заметок и творческого самовыражения. А как насчет превращения рукописных каракулей в пригодный для использования цифровой текст? Для разработчиков SwiftUI фреймворк Vision от Apple предлагает надежное решение на устройстве для оптического распознавания символов (OCR), которое бесшовно интегрируется с PencilKit, чтобы оживить распознавание рукописного ввода.

Итак, PencilKit — для ввода рукописного текста, Vision — для его распознавания, SwiftUI — для UI. 

Код находится на GitHub.

Волшебство происходит благодаря сотрудничеству двух основных фреймворков Apple:

  1. PencilKit (PKCanvasView): этот фреймворк предоставляет доску для рисования. Она позволяет пользователям писать и делать наброски естественным образом с помощью Apple Pencil или пальца, фиксируя эти данные как PKDrawing данные — векторное представление Strokes.
  2. Vision (VNRecognizeTextRequest): как только рукописный текст захвачен, Vision берет управление на себя. VNRecognizeTextRequest специально разработан для анализа изображений и идентификации текстового контента, включая сложный рукописный текст.

“Мост” между двумя Мирами: внедрение PKCanvasView в SwiftUI

Поскольку PKCanvasView является компонентом UIKit, для его интеграции в SwiftUI приложение требуется UIViewRepresentable. Эта структура действует как жизненно важный “мост”, позволяя SwiftUI управлять и отображать UIKit Views. Класс class Coordinator обычно сопровождает UIViewRepresentable для взаимодействия с методами делегатов из PKCanvasView, в частности, canvasViewDrawingDidChange(_:), который сигнализирует о том, что пользователь обновил рисунок drawing.

Читать далее