Перейти к содержимому

OCR кода на Mac: копируйте код из учебников и скриншотов

Автор: Eduard Bruch, разработчик Optic · Обновлено

Чтобы скопировать код, показанный только изображением, дайте OCR прочитать его с экрана, а затем проверьте, прежде чем запускать. Live Text подходит для изображений в приложениях Apple; приложение OCR экрана с режимом кода работает везде и сохраняет отступы.

Коротко: для кода на скриншоте, который можно открыть в «Просмотре», попробуйте Live Text. Для кода в видео, скриншотов IDE в чате или документов только с изображениями мой выбор — Optic, приложение для строки меню, которое копирует текст из любой выделенной на экране области (4,99 $ (разовая покупка) в Mac App Store), с режимом кода для кода.

Раскрытие информации: я делаю Optic.

Почему код тяжелее всего перепечатывать

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

Вариант 1: Live Text

Live Text работает там, где его поддерживает Apple: изображения в «Просмотре», «Фото», «Быстром просмотре» и Safari, а также кадры приостановленного видео в некоторых плеерах. Он не работает в произвольных окнах приложений, видеозвонках и тексте интерфейса. Для одного скриншота кода в «Просмотре» выделить и скопировать текст стоит попробовать. Проверьте отступы после вставки: именно с ними у обычного распознавания текста часто возникают проблемы.

Вариант 2: Optic с режимом кода

Optic читает код из любого места экрана: страницы учебника, видео на паузе, скриншота в Slack или комментария к pull request.

  1. В настройках Optic включите Режим кода (сохранять отступы) (один раз).
  2. Покажите код на экране.
  3. Нажмите значок Optic в строке меню и выберите Захватить текст.
  4. Выделите рамкой фрагмент.
  5. Вставьте в редактор или терминал сочетанием Command-V.

Что меняет режим кода:

  • Отступы сохраняются. Optic определяет отступ каждой строки по положению текста на изображении, поэтому вложенные блоки получаются вложенными. Это важно для Python и YAML.
  • Языковая коррекция отключена. Обычное распознавание текста может «исправлять» необычные слова в сторону настоящих. Для кода это изменило бы идентификаторы, поэтому режим кода её отключает.

Распознавание использует фреймворк Vision от Apple на Mac, интернет не нужен, а у Optic нет доступа к сети. Это полезно, когда на скриншоте внутренний код.

Типичные случаи

  • Команды терминала в документации. Скопируйте команду установки или сборки со скриншота терминала.
  • Скриншоты IDE от коллег. Достаньте код со скриншота в чате в свой редактор, где его можно прочитать и проверить. См. как скопировать текст с изображения в Slack на Mac.
  • Видео по программированию. Поставьте видео на паузу и захватите код на экране.
  • Несколько фрагментов из одного учебника. Захватывайте каждый блок по очереди; последние 20 захватов остаются в истории в строке меню, так что каждый можно скопировать снова, когда дойдёте до него в проекте.

Проверяйте, прежде чем запускать

OCR хорошо справляется с чётким кодом высокого разрешения, но всё равно может путать похожие символы: 0 и O, 1, l и I или прямые и фигурные кавычки, особенно в мелком или размытом тексте. Прочитайте вставленное, прежде чем запускать, и пусть подсветка синтаксиса в вашем редакторе укажет на всё странное. Не вставляйте вывод OCR прямо в оболочку с правами root, не прочитав его.

Где Optic не подходит

  • Нет импорта файлов. Он не открывает изображения и PDF; сначала покажите их на экране.
  • Нет пакетной обработки. Один захват на одно выделение, поэтому PDF на 30 страниц с листингами кода — задача для инструмента OCR документов.
  • Нет понимания синтаксиса. Optic распознаёт символы; он не проверяет и не форматирует код.
  • Рукописный текст. Код на фото доски Optic читать не обещает.

Подробнее о скриншотах кода: как скопировать код со скриншота на Mac.

FAQ

Как скопировать код из учебного видео на YouTube на Mac?

Поставьте видео на паузу, чтобы код был чётким, затем выделите его рамкой в приложении OCR экрана вроде Optic с включённым режимом кода и вставьте в редактор.

Сохраняет ли OCR отступы в коде?

С режимом кода Optic да: отступы восстанавливаются по положению каждой строки. Без него многие инструменты OCR возвращают строки без ведущих пробелов.

Достаточно ли надёжен код после OCR, чтобы его запускать?

Обычно близко к оригиналу, но проверяйте. Обычные ошибки — похожие по виду символы, поэтому прочитайте код перед запуском.

Отправляет ли Optic мой код куда-либо?

Нет. Распознавание выполняется на Mac, а у приложения нет доступа к сети.

Установить Optic из Mac App Store · Все факты об Optic. Optic требует macOS 14 Sonoma или новее. Сравниваете инструменты? См. Optic или TextSniper.