OCR камеры: наведи, сними, переведи

Last updated: 2026-09-03

OCR камеры выполняет OCR локально с помощью форкнутого пакета vision_text_recognition, который поддерживает латиницу, китайский (упрощённый и традиционный), японский и корейский шрифты. Для распознавания ничего не загружается. Каждый блок, возвращаемый движком OCR, несёт свою ограничивающую рамку и распознанный текст; страница результатов рисует перевод поверх тех же координат, сохраняя исходную компоновку.

Конвейер захвата

  1. Инициализация камеры. Контроллер камеры инициализируется асинхронно с явными состояниями initializing / ready / failed. При сбое отображается кнопка повтора, которая повторно запускает инициализацию без повторного входа в защиту initializing.
  2. Реальная ориентация. DeviceOrientation iOS и EXIF ненадёжны, когда приложение заблокировано в портретной ориентации. Приложение считывает необработанные данные акселерометра через sensors_plus и кэширует самый последний кадр, поэтому затвор захватывает реальное направление захвата, даже если интерфейс заблокирован. Затем ориентация EXIF сверяется с этой истиной.
  3. Затвор. Нажатие захватывает с текущим соотношением сторон предпросмотра. Захваченный кадр уменьшается до настраиваемой максимальной длины края перед OCR — большинству страниц нужно 1500–2000 px по длинному краю, чтобы движок читал мелкий шрифт без раздувания памяти.
  4. Вспышка. В видоискателе доступны четыре режима — авто, выкл., вкл. и фонарь — переключатель привязан к системному API вспышки.

Что возвращает OCR

Почему на устройстве

Лучшие практики для точного OCR

  1. Ровный, непрямой свет. Свет из окна превосходит потолочные прожекторы. Тени, пересекающие страницу, — самая частая причина неправильно прочитанных символов.
  2. Нажмите для фокусировки. Если автофокус выбирает не тот объект (стол, палец, край страницы), нажмите на центр текста перед захватом.
  3. Плоские страницы. Страницы, выгнутые к корешку книги, теряют символы у переплёта. По возможности прижмите страницу другой рукой.
  4. Один язык за захват. Страницы со смешанными шрифтами обрабатываются за один проход, но страницу, смешивающую латиницу с вертикальным японским, лучше разделить на два захвата.