Umi-OCR

Umi-OCR распознаёт текст на снимках экрана, в отдельных изображениях и многостраничных PDF, собирает строки в читаемые абзацы, исключает водяные знаки и повторяющиеся колонтитулы, создаёт PDF с поисковым текстовым слоем, а также читает и генерирует QR-коды и штрихкоды; для повторяемых задач доступны пакетная очередь, командная строка и HTTP-интерфейс.

Работа строится вокруг вкладок: для разового фрагмента удобна страница снимка экрана, для папки с иллюстрациями — пакетное распознавание, а для сканов и электронных документов — отдельная очередь обработки страниц. Слева обычно остаётся исходное изображение или список файлов, справа — параметры, история и результат, поэтому текст можно проверить до копирования или сохранения.

Перед запуском важно выбрать модель языка, способ разбора макета и режим обработки документа. Эти три настройки сильнее всего влияют на результат: неподходящая языковая модель искажает похожие символы, неверная схема чтения меняет порядок колонок, а принудительное распознавание всей страницы может зря растрировать уже существующий текстовый слой.

Скачать Umi-OCR

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Umi-OCR
Оценка 8.5
  • Нет версии для macOS
  • Paddle требователен к CPU
  • Нет редактирования PDF
Скачать Umi-OCR
Загрузка начнётся после нажатия

Как устроен рабочий процесс Umi-OCR

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

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

Варианты оформления и вкладки Umi-OCR

В каждой задаче есть собственные настройки, поэтому изменение параметров снимка экрана не обязано менять пакетную очередь документов. Это позволяет держать один профиль для коротких русскоязычных фрагментов, второй — для английских технических страниц с сохранением отступов, третий — для PDF, где нужно копировать уже существующий текст и распознавать только сканированные вставки. Такой подход снижает число переключений между взаимоисключающими схемами.

История результатов помогает вернуться к предыдущему кадру без повторного захвата. Для чувствительных данных эту возможность следует учитывать: если распознавались пароли, номера документов или персональные сведения, записи лучше очищать после завершения работы. Сама обработка не требует отправки изображения во внешний OCR, однако локальная история и файлы результата остаются на компьютере, пока пользователь их не удалит.

Первый запуск и базовая настройка

После запуска откройте Глобальные настройки. При первом старте язык интерфейса выбирается по системным параметрам, но его можно изменить вручную. Русский перевод присутствует в списке языков; после переключения названия вкладок и пояснения к параметрам становятся понятнее, хотя обозначения форматов, имена движков и ключи API остаются техническими.

Выбор языка интерфейса Umi-OCR

В разделе интерфейса регулируются тема, шрифт, масштаб текста и способ отрисовки. Масштаб полезно менять не только ради удобства чтения: при очень крупном системном DPI часть длинных строк параметров может занимать лишнее место, а уменьшение интерфейсного шрифта освобождает область предпросмотра. Тёмная тема комфортнее при распознавании ночью, но на точность OCR она не влияет, поскольку движок получает исходное изображение, а не вид окна.

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

Глобальные настройки интерфейса

Сразу стоит проверить OCR-плагин и язык. В настройках распознавания доступны движки Rapid и Paddle, а остальные страницы и сценарии при переключении не меняются. Rapid потребляет меньше памяти и совместим с более широким набором процессоров; Paddle обычно работает быстрее на подходящем оборудовании, зато может не запуститься на некоторых Pentium, Celeron и Atom. Если компьютер неизвестной конфигурации или предназначен для массового развёртывания, безопаснее начать с Rapid.

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

Распознавание текста со снимка экрана

Вкладка снимка экрана рассчитана на короткий цикл: нажать горячую клавишу, обвести область, дождаться результата и скопировать текст. Захватывать лучше не всю страницу, а только нужный абзац или таблицу. Чем меньше посторонних элементов попадает в кадр, тем реже движок принимает иконки, линии интерфейса и декоративные подписи за символы, а анализ порядка блоков выполняется быстрее.

Настройки снимка экрана

Предпросмотр слева показывает захваченный фрагмент и рамки найденных строк. Выделение текста мышью связано с координатами OCR: можно выбрать не весь результат, а несколько блоков непосредственно на изображении. Справа хранится текстовая запись, которую разрешено исправлять. Такой двухсторонний контроль удобен для артикула, номера заказа или команды: сначала сравниваются спорные символы на картинке, затем редактируется только ошибка.

Выделение распознанных блоков

Кроме системного захвата поддерживается вставка изображения из буфера обмена. Это полезно, когда кадр уже сделан другим инструментом, прислан в мессенджере или скопирован из браузера. Вставка сохраняет исходное разрешение буфера и часто даёт лучший результат, чем повторный снимок масштабированной картинки. Если изображение в буфере содержит прозрачность, следует проверить фон: светлый текст на прозрачном слое может стать плохо различимым после подстановки цвета.

Параметр автоматического копирования сокращает цикл до одного действия: после распознавания итог помещается в буфер. Его стоит выключить при сравнении нескольких вариантов, иначе каждое новое распознавание заменяет ранее скопированный фрагмент. В истории рядом с записью остаются время, длительность и показатель уверенности, поэтому можно найти результат, полученный с другим языком или схемой разбора.

Для повторяющейся области есть командный захват с координатами. Указываются номер монитора и прямоугольник x, y, ширина, высота. Это подходит для панели состояния, фиксированного поля удалённой системы или постоянно обновляющегося счётчика. На конфигурации с несколькими дисплеями номер начинается с нуля; неверный номер или координаты за пределами экрана приводят к пустому либо обрезанному кадру.

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

Как получить читаемый результат из интерфейса

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

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

После распознавания проверяют похожие пары: ноль и латинскую O, единицу и I, кириллическую С и латинскую C, дефис и длинное тире. Языковая модель использует контекст, но короткие коды почти не дают контекста, поэтому именно артикулы и серийные номера требуют ручного контроля. Показатель уверенности помогает найти сомнительный блок, однако высокий балл не гарантирует правильность редкого обозначения.

Разбор строк, абзацев и колонок

Распознающий движок сначала возвращает отдельные текстовые блоки с координатами. За превращение этих блоков в связный текст отвечает модуль постобработки. Он определяет порядок чтения, добавляет пробелы или переносы и может объединять строки в естественные абзацы. Поэтому одна и та же картинка при неизменной модели даёт разные текстовые представления в зависимости от выбранной схемы.

Выбор схемы разбора макета

Схемы для нескольких колонок подходят газетным страницам, научным статьям и каталогам. Вариант с естественными абзацами пытается сохранить смысловые группы; вариант с обязательным переносом оставляет каждую найденную строку отдельно; режим без переносов соединяет блоки компактнее. Если текст двух колонок перемешивается, нужно проверить, действительно ли выбрана многоколоночная схема, и сузить кадр так, чтобы в него не попадали соседние области.

Одноколоночные схемы полезны для книг, писем и диалогов. Сохранение отступов предназначено для программного кода, конфигураций и псевдографических таблиц: оно старается передать промежутки между блоками, а не превращать всё в литературный абзац. В результате такой текст менее удобен для обычного чтения, зато структура вложенности и визуальное выравнивание остаются заметными.

Режим без постобработки нужен, когда координаты и исходный порядок будут анализироваться собственным скриптом. В графическом интерфейсе он может выглядеть грубо, поскольку строки не собираются в привычные абзацы. В HTTP-ответе этот режим ценен тем, что приложение получает блоки, уверенность и четыре угла рамки и само решает, как строить таблицу, форму или индекс.

Вертикальный текст требует двух условий: соответствующей схемы расположения и модели, умеющей распознавать вертикальную письменность. Одного переключателя макета недостаточно. Если модель обучена только горизонтальным строкам, она может правильно обнаружить область, но вернуть набор похожих знаков. Для японских и китайских вертикальных страниц сначала выбирают подходящую библиотеку, затем схему чтения.

Пакетное распознавание изображений

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

Очередь пакетного OCR

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

Задание можно приостановить и продолжить, пока программа не закрыта. Пауза полезна на ноутбуке перед переходом на батарею или при временной нагрузке процессора другой задачей. Сон и пробуждение системы не требуют начинать очередь заново, но завершение процесса или очистка каталога данных уничтожит рабочее состояние. Перед длительным перерывом стоит сохранить уже полученные результаты.

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

Результаты изображений сохраняются в TXT, JSONL, Markdown и CSV. TXT подходит для чтения и полнотекстового индекса; Markdown удобен, когда текст затем попадает в базу знаний; CSV открывается как таблица, где строки можно сопоставлять с файлами; JSONL сохраняет структурированные записи по одной на строку и легче обрабатывается скриптами. Формат выбирают до массового запуска, чтобы не преобразовывать десятки тысяч результатов повторно.

При открытии CSV в Excel возможна проблема с кодировкой кириллицы. Надёжнее импортировать файл через мастер данных и явно выбрать UTF-8, а не открывать двойным щелчком в конфигурации, где Excel угадывает локальную кодовую страницу. Альтернатива — сохранить JSONL или TXT и загрузить его инструментом, который позволяет выбрать кодировку.

Имена выходных файлов следует проверять на коллизии. Если в разных подпапках лежат изображения с одинаковым именем, сохранение в единую плоскую папку может привести к замене или автоматическому переименованию. Сохранение рядом с исходниками либо воспроизведение структуры каталогов делает соответствие прозрачнее. Для архивной работы полезно добавлять в имя проекта дату и номер партии.

Игнорирование водяных знаков и колонтитулов

Редактор игнорируемых областей позволяет нарисовать несколько прямоугольников правой кнопкой мыши. Текстовые блоки, полностью попавшие внутрь этих областей, исключаются из результата. Это рассчитано на одинаковые логотипы, номера страниц, штампы и верхние или нижние колонтитулы в серии однотипных изображений.

Редактор игнорируемых областей

Прямоугольник лучше делать с запасом по краям. Если часть строки выходит наружу, блок может сохраниться целиком, потому что исключение применяется к обнаруженному блоку, а не к каждому символу отдельно. Слишком большой прямоугольник, напротив, способен удалить полезный заголовок, расположенный рядом с водяным знаком. Контрольная партия должна включать страницы, где элементы немного смещены.

Для документов можно ограничить диапазон страниц, на котором действует маска. Это важно, когда титульный лист оформлен иначе, а постоянный колонтитул появляется со второй страницы. Начальная страница задаётся положительным номером, конец может быть отрицательным и отсчитываться от конца документа. Маска для середины книги не должна автоматически применяться к обложке и приложению.

Игнорируемая область не заменяет удаление графики из PDF. Она влияет на текстовый результат OCR, но изображение водяного знака остаётся в визуальном слое документа. Если требуется юридически удалить отметку или закрыть персональные данные, нужен редактор PDF с настоящим удалением или редактированием объектов; исключение текста из распознавания не является редактированием содержимого.

Баланс скорости и точности на больших изображениях

Параметр предельной длины стороны управляет уменьшением крупных картинок перед распознаванием. Для Paddle доступны значения 960, 2880, 4320 и практически неограниченный режим. Низкий предел ускоряет обработку фотографий высокого разрешения, но мелкий текст после уменьшения теряет детали. Высокий предел сохраняет мелкие подписи, повышая нагрузку на память и процессор.

Значение следует выбирать по размеру букв, а не по мегапикселям камеры. Фотография листа с крупным заголовком может хорошо распознаваться после сильного уменьшения, тогда как схема с десятками мелких обозначений требует 2880 или 4320. Неограниченный режим оправдан только после теста: огромный панорамный скан способен занять много памяти и замедлить всю очередь.

Качество JPEG влияет на тонкие штрихи и знаки препинания. При повторном сохранении с сильным сжатием вокруг букв появляются квадраты и ореолы, которые движок воспринимает как шум. Для архивных страниц предпочтительнее PNG или исходный TIFF, если он поддерживается цепочкой импорта. Когда доступен только JPEG, лучше использовать оригинал, а не изображение, многократно пересланное через мессенджер.

Распознавание PDF и других документов

Вкладка документов создаёт очередь многостраничных файлов и позволяет определить, какие части страницы нужно распознавать. Главное отличие от простой обработки картинок — программа видит не только отрисованную страницу, но и уже существующие текстовые и графические объекты. Благодаря этому можно не распознавать заново то, что изначально содержит корректный текст.

Настройки пакетной обработки документов

Режим смешанный OCR и исходный текст подходит гибридным PDF, где часть страниц экспортирована из редактора, а часть отсканирована. Существующий текст копируется, изображения проходят распознавание. Это уменьшает ошибки в цифровых фрагментах и сохраняет символы, которые уже записаны в PDF. Однако итог следует проверить на дубликаты, если в документе имеется скрытый некачественный слой поверх скана.

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

Только OCR изображений обрабатывает графические области, а только копирование исходного текста извлекает текст без распознавания. Последний вариант работает как проверка содержимого: если результат пуст, вероятно, страницы действительно состоят из картинок. Он также помогает быстро получить текст из корректного цифрового PDF без вычислений нейросетевого движка.

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

Можно задать диапазон страниц или конкретный список. Список имеет приоритет над диапазоном и подходит для выборочного распознавания, например страниц 1, 2 и 5. Отрицательная граница конца позволяет отсчитывать с последней страницы. Перед большой книгой полезно обработать несколько страниц из начала, середины и конца: качество скана и макет часто меняются внутри одного файла.

В очереди видны состояние и диапазон, а задание можно остановить или поставить на паузу. Не следует закрывать программу, пока формируется итоговый PDF: завершённое распознавание страниц и сборка файла — разные этапы. Если процесс был прерван на стадии записи, исходный документ остаётся целым, но выходной файл может оказаться неполным и его нужно создать заново.

Выходные форматы документов

Двухслойный PDF сохраняет визуальное изображение страницы и добавляет невидимый текст, привязанный к координатам. Такой файл выглядит как исходный скан, но поддерживает поиск и выделение. Это основной вариант для архива, где важен внешний вид печатного оригинала. Точность выделения зависит от рамок OCR: при сложной геометрии курсор может идти по строкам не так, как ожидает пользователь.

Однослойный текстовый PDF формируется из распознанного содержания без исходного изображения страницы. Он меньше ориентирован на факсимильное хранение и полезен, когда важна доступность текста. Сложные схемы, подписи, рукописные пометки и графика при таком преобразовании не воспроизводятся как полноценный макет. Перед удалением скана нужно убедиться, что визуальные сведения не потеряны.

TXT с данными страниц сохраняет служебное разделение, TXT Plain содержит только распознанный текст. JSONL предназначен для программной обработки и постраничных объектов. CSV представляет одну страницу строкой и удобен для быстрой сверки в таблице. При запросе нескольких типов HTTP-интерфейс возвращает ZIP с набором созданных файлов, а при одном типе — ссылку на конкретный результат.

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

Временные задания HTTP-интерфейса хранятся ограниченное время и должны очищаться после скачивания. Очистка удаляет загруженный документ, промежуточные страницы и ссылки результата. Если вызвать её до завершения, задание принудительно прекращается. Графическая очередь также не должна рассматриваться как долговременный архив: окончательные файлы следует переместить в контролируемую папку и проверить открытие.

Что Umi-OCR не делает с PDF

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

Распознанный текст не становится автоматически безошибочной копией. Поиск может не найти слово, если одна буква распознана неверно, а копирование таблицы способно потерять сетку. Для задач, где важны суммы и реквизиты, результат сверяют с изображением. Удобная схема — сначала создать двухслойный PDF для поиска, затем отдельно выгрузить CSV или JSONL для машинной проверки.

Табличная структура не гарантируется. Обычный OCR обнаруживает текстовые блоки и их координаты, но не всегда понимает объединённые ячейки, скрытые линии и многоуровневые заголовки. В Umi-OCR можно сохранить данные и порядок блоков, однако полноценное восстановление электронной таблицы потребует дополнительного парсера или ручной правки. Это особенно заметно на счетах с разрывами строк внутри ячеек.

Языковые модели и выбор движка

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

В конфигурации Paddle документированы модели упрощённого и традиционного китайского, английского, японского, корейского и кириллицы. Набор конкретного плагина может отличаться, поэтому HTTP-клиенту не следует жёстко зашивать список. Запрос параметров возвращает допустимые значения, названия, типы и значения по умолчанию; интерфейс автоматизации должен строить выбор на этом ответе.

Rapid и Paddle отличаются прежде всего подключённым OCR-плагином. Функции вкладок, пакетные форматы и QR-инструменты остаются теми же. Rapid обычно выбирают для старого или экономичного процессора и меньшего потребления памяти. Paddle подходит совместимой машине, где важна скорость и допустима более высокая загрузка ресурсов. Сравнивать их корректно на одной и той же контрольной партии.

Ошибка 0xc0000142 или сообщение OCR init fail при Paddle часто указывает на несовместимый процессор. Практическое решение — переключиться на Rapid, а не переустанавливать программу бесконечно. Если такая же ошибка остаётся в Rapid, нужно проверить целостность распаковки, права чтения каталога, антивирусный карантин и журнал запуска.

Коррекция направления текста в Paddle включает дополнительную классификацию наклона или переворота. Она улучшает фотографии, где строки повёрнуты, но снижает скорость. Для ровного скана параметр можно оставить выключенным. Если страницы повёрнуты на 90 градусов целиком, надёжнее сначала исправить ориентацию документа, а затем использовать классификатор для небольших отклонений.

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

GPU не является обязательным условием обычного использования. Интерфейс может применять аппаратное ускорение отрисовки, но это не то же самое, что ускорение OCR-модели. Пользователь не должен ожидать, что переключение графического рендерера ускорит распознавание. Напротив, выключение аппаратной отрисовки иногда устраняет мерцание, не меняя вычисления движка.

Чтение и создание QR-кодов и штрихкодов

Страница QR Code разделена на чтение и генерацию. Для чтения можно сделать снимок, вставить картинку или перетащить файл. На одном изображении поддерживается несколько кодов, поэтому кадр с этикеткой или листом наклеек не требуется разрезать заранее. Результаты отображаются списком и могут копироваться отдельно.

Чтение нескольких кодов

Поддерживаются Aztec, Codabar, Code 128, Code 39, Code 93, DataBar, DataBar Expanded, Data Matrix, EAN-13, EAN-8, ITF, линейные и матричные группы, MaxiCode, Micro QR, PDF417, QR Code, UPC-A и UPC-E. Названия LinearCodes и MatrixCodes обозначают групповые режимы детектора; для производственного сценария лучше указать ожидаемый тип, если плагин позволяет сузить поиск.

Качество штрихкода зависит от резкости модулей и тихой зоны вокруг изображения. При кадрировании следует оставить белое поле по краям, не наклонять этикетку и избегать бликов. Для очень маленького кода полезен исходный снимок камеры, а не экранная миниатюра. Если на листе много кодов, повышение разрешения увеличивает время, но снижает вероятность пропуска.

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

Генерация QR-кода

Командная строка умеет читать коды из нескольких путей и создавать изображение заданной ширины и высоты. Если указан только один размер, код строится квадратным; два числа задают ширину и высоту. Нестандартное растяжение готового QR-кода нежелательно: лучше создавать его с нужным размером, сохраняя квадратные модули.

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

Настройка интерфейса для ежедневной работы

Тема, шрифт и масштаб меняют только представление, но правильная компоновка ускоряет проверку. Для длинных документов удобно расположить список страниц слева, настройки справа и увеличить центральную область текста. Для снимков экрана полезна широкая картинка слева и история справа. В большинстве вкладок ориентацию колонок можно переключить вручную.

Закрепление вкладок защищает рабочую конфигурацию от случайного закрытия. Если используются только снимок экрана и пакетная очередь, остальные страницы можно убрать, а нужные закрепить. Порядок вкладок сохраняется, поэтому после перезапуска пользователь возвращается к знакомой последовательности. Это особенно полезно на общем рабочем месте, где инструкция ссылается на конкретное расположение.

Режим поверх окон и скрытие по Esc образуют удобную пару. Сначала окно держат поверх источника для проверки, затем скрывают, не завершая процесс. При следующем вызове история остаётся доступной. Если Esc конфликтует с приложением, его следует учитывать при работе в полноэкранном режиме: скрытие Umi-OCR не обязано отменять действие внутри исходной программы.

Рендерер выбирается в разделе интерфейса и внешнего вида. При мерцании, смещении элементов или сообщении о невозможности создать OpenGL-контекст пробуют другой вариант отрисовки либо отключают аппаратное ускорение. После изменения интерфейс нужно перезапустить и проверить не только главное окно, но и экран выделения, поскольку проблема может проявляться только при снимке.

На Windows 7 важны системные обновления, драйверы и библиотеки Visual C++. Сообщение об отсутствующем api-ms-win-crt-runtime-l1-1-0.dll указывает не на модель OCR, а на системную среду выполнения. Скачивать отдельную DLL с неизвестного сайта не следует; безопаснее установить официальные обновления и пакет библиотек, затем повторить запуск.

В Linux рекомендуется рабочий стол на базе Debian с glibc не ниже 2.31. При отсутствии графического окружения разумнее использовать Docker-вариант и HTTP-интерфейс. Ошибка платформенного плагина xcb означает нехватку библиотек Qt или X11; чёрный экран при снимке часто связан с Wayland и механизмом захвата, поэтому распознавание файлов может работать даже при неисправном экранном захвате.

Командная строка Umi-OCR

Точкой входа служит основной исполняемый файл. Команды управления показывают окно, скрывают его, завершают процесс и перечитывают файл настроек. Параметр reload удобен для развёртывания: администратор меняет INI-файл в каталоге данных и просит уже запущенный процесс применить значения без ручного обхода всех вкладок.

Команда screenshot без параметров запускает выбор области мышью. Параметры screen и rect выполняют захват заданного монитора и прямоугольника без ручного выделения. Формат rect — x, y, ширина, высота. Это позволяет привязать OCR к фиксированному элементу интерфейса и вызывать его из планировщика или внешнего менеджера горячих клавиш.

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

Параметры языка, копирования и показа окна для screenshot, clipboard и path берутся со вкладки снимка экрана. Это важная особенность: сценарий командной строки не полностью самодостаточен, пока нужные значения не настроены в интерфейсе или файле конфигурации. Для воспроизводимости конфигурацию следует хранить вместе со сценарием и применять reload перед серией.

Результат можно копировать в буфер, перезаписывать файл или дописывать в конец. У Umi-OCR есть собственные обозначения для вывода, поскольку стандартное перенаправление потока и конвейер оболочки могут не сработать. Скрипт, который ожидает текст в stdout, лучше перевести на HTTP-интерфейс или явно читать указанный выходной файл.

Команды QR умеют распознавать один или несколько файлов и создавать изображение из строки. Команды сокращаются до уникального начала, но в производственном сценарии лучше использовать полные имена: короткая форма может стать неоднозначной после появления нового параметра, а полная команда легче читается в журнале.

Расширенный интерфейс командной строки позволяет перечислять страницы и модули, открывать вкладки и вызывать функции Python- или QML-модулей. Это мощный, но нестабильный уровень: имена суффиксов меняются между запусками, параметры требуют знания исходного кода, а синхронный вызов в главном потоке способен нарушить работу интерфейса. Для обычной интеграции предпочтительнее документированный HTTP API.

HTTP-интерфейс и автоматизация

HTTP-служба включается в глобальных настройках и по умолчанию может слушать локальный адрес. Для командной строки она также используется как канал связи между процессами. Локальный loopback не проходит через физическую сетевую карту, но переключение на доступ со всех адресов открывает службу локальной сети. Перед таким переключением нужно ограничить доступ брандмауэром и доверенной подсетью.

Порт по умолчанию — 1224, его можно изменить. Клиенту полезно сначала вызвать endpoint параметров. Ответ описывает допустимые опции, типы, варианты и значения по умолчанию. Это защищает интеграцию от различий между OCR-плагинами: интерфейс не предполагает, что у Rapid и Paddle совпадают все ключи.

Для картинки выполняется POST с Base64 без префикса data:image. В ответе код 100 означает успех, 101 — отсутствие текста, другие значения — ошибку. При структурированном формате массив содержит text, score, box и end. Поле box задаёт четыре угла блока по часовой стрелке, а end сообщает, какой пробел или перенос добавить при сборке абзаца.

Текстовый формат возвращает уже объединённую строку. Он проще для буфера и поиска, но теряет координаты и уверенность. Если приложение собирает форму или таблицу, следует использовать словарь и хранить box. Если требуется только проиндексировать содержимое, текстовый ответ уменьшает объём последующей обработки.

Параметры Paddle включают язык, коррекцию направления и предел стороны изображения. Независимые параметры постобработки задают схему макета и игнорируемые прямоугольники. Игнорируемая область передаётся массивом пар координат. Текстовый блок удаляется, когда полностью оказывается внутри одного из прямоугольников; частичное пересечение не гарантирует удаления.

Документный API состоит из пяти шагов: загрузить файл и получить идентификатор, опрашивать состояние, запросить нужные выходные форматы, скачать результат и очистить задачу. Во время опроса доступны число обработанных страниц, общее число, состояния waiting, running, success или failure и сообщение ошибки. Даже при failure часть уже готовых страниц может присутствовать в данных.

Загрузка принимает параметры страницы, пароль и режим извлечения. Диапазон можно задать началом и концом, а список конкретных страниц имеет приоритет. После успешного завершения запрос download принимает pdfLayered, pdfOneLayer, txt, txtPlain, jsonl и csv. Несколько типов упаковываются в ZIP.

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

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

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

Практические сценарии

Перенос текста из защищённого интерфейса

Когда программа не позволяет выделить надпись, открывают вкладку снимка экрана, выбирают только текстовую область и включают автоматическое копирование. Для однотипных полей полезен фиксированный rect. После каждого запуска результат сразу попадает в буфер, но перед вставкой номера или суммы нужно сравнить похожие символы с предпросмотром.

Создание поискового архива сканов

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

Удаление повторяющегося колонтитула из текста

В редакторе масок рисуют прямоугольники вокруг верхней строки и номера страницы, задают диапазон, где шаблон одинаков, и запускают несколько разнородных страниц. Если полезный заголовок попадает в маску, прямоугольник сужают или начинают действие со второй страницы. Визуальный водяной знак в PDF при этом не исчезает.

Распознавание программного кода

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

Обработка каталога снимков

Добавляют корневую папку с рекурсивным поиском, выбирают JSONL для последующей обработки и тестируют небольшой набор. Для одинаковых водяных знаков создают маску. Затем запускают всю очередь, включают сон после завершения и на следующий день сверяют число результатов с числом исходных файлов, учитывая пустые изображения.

Выборочный OCR страниц договора

Вместо полного диапазона задают список страниц с реквизитами и приложениями. Если документ защищён, вводят известный пароль. Для страниц с цифровым текстом используют mixed, для сканов — fullPage только при необходимости. Результат сохраняют в TXT с обозначением страниц, чтобы выдержать соответствие ссылкам в договоре.

Локальный OCR из собственной программы

При старте интеграция вызывает get_options, выбирает доступную модель и отправляет Base64 на локальный endpoint. Ответ dict сохраняется вместе с координатами и score. Запросы проходят последовательно через очередь, ошибки соединения повторяются с задержкой, а при завершении клиент закрывает соединение перед выходом Umi-OCR.

Чтение листа с несколькими QR-кодами

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

Ошибки и способы устранения

Программа не запускается или OCR сообщает init fail

На Windows с Paddle сначала проверяют модель процессора. Pentium, Celeron и Atom могут быть несовместимы; переход на Rapid — основной практический тест. Затем распаковывают архив заново в путь без запрета записи, проверяют, не удалил ли антивирус файл плагина, и запускают из командной строки, чтобы увидеть журнал. Совпадение SHA-256 исключает повреждение загрузки.

Мерцание, смещение элементов и OpenGL

В глобальных настройках открывают раздел интерфейса, меняют рендерер и отключают аппаратное ускорение. После перезапуска проверяют главное окно и экран захвата. Обновление драйвера видеокарты может помочь, но на старой системе программный рендер часто надёжнее. Изменение рендера не ухудшает распознаваемое изображение.

Низкая точность конкретного языка

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

Колонки читаются в неправильном порядке

Выбирают многоколоночную схему и сокращают кадр до логической страницы. Декоративные боковые панели и подписи к рисункам могут нарушить порядок, поэтому их исключают маской или распознают отдельно. Для программной обработки берут dict с координатами и сортируют блоки самостоятельно, если готовые схемы не соответствуют макету.

CSV показывает кракозябры

Файл открывают через импорт данных с кодировкой UTF-8. Если корпоративная версия Excel по-прежнему угадывает неверно, используют JSONL или TXT и конвертируют контролируемым скриптом. Пересохранение искажённого CSV может безвозвратно заменить символы, поэтому исходный файл не перезаписывают до правильного импорта.

HTTP периодически возвращает ECONNREFUSED

Уменьшают число параллельных запросов до последовательной очереди, добавляют повтор с задержкой и проверяют, жив ли рабочий процесс OCR. Большой документ не следует одновременно обрабатывать несколькими клиентами. Если процесс завершился, изучают журнал и перезапускают программу; бесконечные повторы без проверки состояния скрывают настоящую аварию.

PDF формируется без ожидаемого текста

Проверяют режим извлечения: textOnly не распознаёт скан, imageOnly может пропустить цифровой текст, а mixed зависит от структуры страницы. Для проблемной страницы выполняют fullPage и сравнивают. Затем проверяют язык, диапазон и список страниц. Если файл уже содержит ошибочный скрытый слой, принудительный OCR может дать более полезный результат.

Снимок в Linux получается чёрным

Проблема часто относится к Wayland и механизму захвата, а не к OCR. Можно войти в сеанс X11, использовать внешний инструмент снимков и вставлять файл или буфер в Umi-OCR. На сервере без рабочего стола экранный захват не нужен: документы обрабатывают через Docker и HTTP API.

Горячая клавиша не действует

Назначают другое сочетание, закрывают конфликтующие менеджеры клавиш и сравнивают уровни прав Umi-OCR и активной программы. В полноэкранных приложениях системный перехват может иметь низкий приоритет. Для постоянной автоматизации надёжнее внешний менеджер горячих клавиш, вызывающий команду screenshot с фиксированной областью.

Результат содержит водяной знак

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

Сравнение Umi-OCR с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
Umi-OCRСнимки экрана, пакетные изображения, PDF с поисковым слоем, локальный APIНет версии для macOS и нет полноценного редактирования PDF
PDF CommanderРедактирование, сборка, аннотирование и подготовка PDF после распознаванияНе ориентирован на массовый OCR папок и программный OCR API
NAPS2Сканирование с устройств и создание поисковых PDF на Windows, macOS и LinuxНе сохраняет результат OCR напрямую в обычный текстовый файл
Capture2TextМгновенное распознавание выделенной области экрана в WindowsСлабее подходит для многостраничных PDF и документных очередей
OCRmyPDFАвтоматическое добавление текстового слоя и PDF/A в сценариях командной строкиТребует внешних компонентов Tesseract и Ghostscript
TesseractВстраивание OCR-движка, обучение моделей и разные структурированные форматыНет собственного графического интерфейса и пакетного рабочего места

Umi-OCR стоит выбирать, когда в одном окне нужны снимки, папки изображений, PDF, маски водяных знаков и локальная автоматизация. NAPS2 удобнее там, где процесс начинается со сканера и нужны драйверы, коррекция страниц и выпуск PDF. Capture2Text проще для единственного действия выделить область и получить текст. OCRmyPDF лучше вписывается в серверный конвейер PDF, а Tesseract — в разработку собственного решения. PDF Commander полезнее после OCR, когда документ нужно редактировать, объединять, подписывать или снабжать аннотациями.

При выборе следует разделять точность движка и удобство оболочки. Umi-OCR добавляет очередь, макетный анализ, маски, историю и API вокруг подключаемых моделей. Tesseract и OCRmyPDF дают более традиционный командный конвейер; NAPS2 связывает OCR со сканированием; Capture2Text минимизирует число действий. Один и тот же набор страниц стоит прогнать через два кандидата и сравнить ошибки, порядок чтения и время, а не ориентироваться только на перечень функций.

Ограничения, которые важно учитывать

Поддержка Windows и Linux не означает одинаковое поведение всех функций. Экранный захват зависит от оконной системы, драйверов и разрешений, а поддерживаемое Linux-окружение прежде всего предполагает Debian-подобную систему с графическим рабочим столом. Для macOS готовой официальной версии нет; запуск через совместимость или виртуальную машину не следует считать полноценной поддержкой.

Paddle требователен к набору инструкций процессора и памяти. На слабой машине попытка получить небольшое преимущество в скорости может закончиться ошибкой запуска. Rapid предсказуемее для старого оборудования, но тоже не отменяет ограничения размера изображений. Выбор движка должен опираться на тестовую очередь и журнал ресурсов.

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

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

HTTP-служба удобна для интеграции внутри одной машины или доверенной сети, но не является высоконагруженным OCR-сервером. Слабая конкурентность и возможные отказы соединения требуют очереди и повторов. Открывать порт в интернет без аутентификации и сетевой защиты нельзя: API принимает документы и возвращает распознанное содержимое.

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

Контроль качества распознавания

Контрольную выборку составляют не из самых чистых страниц, а из типичных трудных случаев: мелкий шрифт, косой скан, две колонки, таблица, водяной знак, страница с цифровым текстом и страница-картинка. Для каждой фиксируют выбранную модель, предел стороны, коррекцию направления и схему макета. Так можно понять, какая настройка улучшила результат, а не полагаться на впечатление.

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

В структурированном HTTP-ответе score помогает ранжировать сомнительные блоки. Можно установить внутренний порог и отправлять строки с низкой уверенностью на ручную проверку. Однако порог нельзя применять механически: редкий код иногда распознаётся ошибочно с высокой уверенностью, а корректный декоративный заголовок получает низкий балл.

После создания двухслойного PDF проводят три теста: поиск по слову на разных страницах, выделение строки мышью и копирование в текстовый редактор. Поиск проверяет сам слой, выделение — соответствие координат, копирование — порядок и разделители. Успех только одного теста не гарантирует качественный архив.

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

Исходники не удаляют сразу после получения текста. Минимальный срок хранения определяется требованиями задачи, но технически нужен хотя бы до выборочной проверки и резервного копирования. OCR — производная информация: при смене модели или обнаружении систематической ошибки исходное изображение позволяет повторить обработку.

Рекомендованная схема работы

Для разового текста откройте вкладку снимка, выберите язык, оставьте естественные абзацы и захватите только полезную область. Сверьте спорные символы, исправьте запись и скопируйте результат. Если такой кадр повторяется, задайте фиксированную область через команду и настройте вывод в буфер или файл.

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

Для PDF определите природу страниц: цифровой текст, скан или смесь. Начните со mixed, используйте fullPage только для испорченного скрытого слоя, задайте страницы и пароль. Создайте двухслойный PDF и TXT Plain, проверьте поиск и порядок. Для последующего изменения страниц откройте результат в специализированном PDF-редакторе.

Для интеграции используйте HTTP, а не расширенные вызовы QML. Сначала запросите опции, затем отправляйте задания последовательно, храните идентификаторы, опрашивайте состояние с паузой, скачивайте результаты и очищайте задачи. В журнале приложения и клиента записывайте код ответа и время, чтобы отличить ошибку документа от сбоя соединения.

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

Тонкая настройка распознавания по типу источника

Скан с офисного МФУ

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

Фотография документа с телефона

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

Снимок технической схемы

На чертеже текст перемешан с линиями, стрелками и рамками. Полный OCR страницы часто возвращает подписи в неудобном порядке, поэтому схему делят на логические зоны или получают структурированный ответ с координатами. Предел стороны повышают до значения, при котором различимы индексы и единицы измерения. Маски применяют к штампу и постоянной рамке, но не к обозначениям, расположенным рядом с ними.

Газета или научная статья

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

Интерфейс с мелкими подписями

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

Книга с вертикальной письменностью

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

Организация пакетного проекта

До импорта создают отдельные каталоги для исходников, контрольной выборки, результатов и ошибок. Исходники оставляют неизменными, а все преобразования выполняют на копиях. Это позволяет повторить OCR с другой моделью и сравнить результаты. В имени партии фиксируют дату и тип материала, а в сопроводительном текстовом файле — язык, движок, схему макета, предел стороны и режим PDF.

Контрольная выборка должна покрывать минимум один пример каждого макета. Если папка содержит договоры, приложения, таблицы и письма, выборка из десяти одинаковых первых страниц не выявит проблем. После теста проверяют не только читаемость, но и сохранение: открывается ли CSV, соответствует ли JSONL ожидаемой структуре, находится ли слово в двухслойном PDF, совпадают ли номера страниц.

Большую очередь разумно делить на партии, даже если интерфейс способен загрузить все файлы. Разделение облегчает повтор ошибок, ограничивает объём истории и позволяет менять настройки между типами материала. Для каждой партии сохраняют список входных путей и число успешных результатов. Файл, который не обработан, переносится в отдельную папку, а не запускается бесконечно вместе со всей очередью.

После завершения проверяют свободное место и размер результатов. Двухслойный PDF может быть близок по объёму к исходнику, а дополнительные TXT, JSONL и CSV увеличивают набор. Если выход сохраняется рядом с документами, резервная система может одновременно копировать исходник и производные файлы. Это следует учитывать перед ночной обработкой большого архива.

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

Разбор структурированного HTTP-ответа

Каждый блок в формате dict содержит текст, уверенность, рамку и символ завершения. Четыре точки рамки позволяют учитывать наклон, а не только прямоугольник по двум координатам. Для сортировки сначала группируют блоки по близкой вертикальной позиции, затем по горизонтали; для колонок лучше кластеризовать x-координаты, иначе строка из правой колонки может попасть раньше продолжения левой.

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

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

Код 101 означает, что текст не найден, и не должен автоматически считаться аварией. В пакетном проекте такие файлы записывают как пустые и сверяют визуально: это может быть фотография без текста, пустая страница или ошибка качества. Другие коды сохраняют вместе с сообщением и именем исходника. Клиент не должен заменять конкретную ошибку единым OCR не работает.

В строковом JSON неанглийские символы могут быть представлены Unicode-последовательностями. После нормального разбора библиотекой они превращаются в читаемый текст. Ручная замена обратных слешей до JSON-декодирования опасна. Отдельная проблема возникает, если HTTP-библиотека превратила экранированный перенос в настоящий внутри строки; тогда ответ нормализуют до передачи парсеру, сохраняя остальные escape-последовательности.

Base64 увеличивает объём изображения примерно на треть, поэтому для очень больших файлов запросы потребляют больше памяти, чем сам исходник. Клиенту лучше читать и кодировать один файл за раз, не хранить целую очередь в памяти и ограничивать размер входного изображения. Для документов используется загрузка файла через formData, что практичнее, чем кодирование каждой страницы вручную.

Надёжный цикл документного API

После upload идентификатор задания сохраняют сразу. Клиент опрашивает result с разумным интервалом, а не непрерывным циклом. Поля processed_count и pages_count позволяют показывать прогресс. Когда is_done становится true, проверяют state: только success разрешает переход к созданию итогового файла, но при failure можно запросить уже обработанные данные для диагностики.

Параметр is_unread удобен для потокового чтения: при true сервер возвращает только ещё не прочитанные элементы. Для итогового отчёта используют false, чтобы получить весь набор. Формат text проще для отображения, dict нужен для координат и уверенности. Клиент должен ясно различать прогресс задания и содержимое data, которое может быть пустым при запросе только состояния.

Запрос download выполняют после успешного завершения. Если нужны PDF, TXT и JSONL, их перечисляют одним массивом и получают ZIP, а не запускают три независимых сборки без необходимости. Имя файла берут из ответа. Ссылку скачивают сразу и проверяют HTTP-статус, размер и открытие результата до очистки задания.

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

Повтор upload после неясного ответа может создать второе задание. Поэтому при тайм-ауте сначала проверяют, был ли получен идентификатор и не осталось ли задание в локальном журнале. Для result и download повторы обычно безопаснее, чем повторная загрузка. Ограничение параллельности реализуют одной очередью на экземпляр Umi-OCR.

Проверка поискового PDF

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

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

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

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

Безопасность и воспроизводимость

Локальная обработка исключает обязательную отправку документа стороннему OCR, но HTTP-доступ по сети меняет модель угроз. Службу оставляют на loopback, если удалённые клиенты не нужны. При доступе из локальной сети порт разрешают только конкретным адресам, а конфиденциальные файлы не передают через недоверенную Wi-Fi-сеть без дополнительной защиты.

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

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

Итог

Umi-OCR особенно полезен в процессах, где обычный экранный OCR быстро перерастает в очередь изображений и документов: вкладки не заставляют менять инструмент, постобработка собирает строки в выбранный порядок, маски убирают повторяющиеся помехи, а API переносит те же параметры в скрипт. Наиболее надёжный результат получается после короткой настройки под конкретный материал, контрольной партии и проверки поискового слоя, а не после запуска всех файлов с параметрами по умолчанию.

Для ежедневного использования достаточно освоить четыре решения: правильная языковая модель, схема макета, режим извлечения PDF и выбор Rapid или Paddle по оборудованию. Остальные возможности — QR-коды, журналы, фиксированный захват, JSONL и HTTP — подключаются по мере усложнения задачи. При этом исходные изображения следует сохранять, а распознанный текст считать проверяемым результатом, а не безусловной копией документа.