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.
- В настройках Optic включите Режим кода (сохранять отступы) (один раз).
- Покажите код на экране.
- Нажмите значок Optic в строке меню и выберите Захватить текст.
- Выделите рамкой фрагмент.
- Вставьте в редактор или терминал сочетанием 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.