PaddleOCR: как проверить русский текст после OCR
Артикул АС-010 после PaddleOCR можно принять за латиницу: сверяйте буквы, суммы, порядок строк.
Какой лист скачать, чтобы легко заметить ошибку?
В артикуле АС-010 буква С может выглядеть правильно и при этом оказаться латинской C. Если потом искать товар по точному коду, это различие имеет значение. После распознавания изображения полезно проверить такие места отдельно: глазами по оригиналу и посимвольно по эталону.
Мы подготовили небольшой набор: изображение с русским текстом, его точную расшифровку и программу, которая показывает различия. В учебном листе семь строк с артикулом, количеством, ценой, суммой, датой и статусом. Все сведения вымышлены. В файле demo-errors.txt редакция намеренно изменила четыре строки; это демонстрация проверки, а не результат работы PaddleOCR.
Набор скачивается бесплатно и без регистрации. Программа сравнения работает локально на Python 3.10 или новее, без дополнительных пакетов, ключей и обращений к модели. Можно начать с готового учебного примера, даже если PaddleOCR ещё не установлен. На выходе получится текстовый отчёт, который можно сохранить рядом с исходным изображением.
Что нужно для работы с PaddleOCR?
Часть гайда с распознаванием рассчитана на уже установленный PaddleOCR 3.x и совместимый PaddlePaddle. Установку выбирайте по инструкции проекта для своей системы. В комплекте нет моделей и установщика. Первый запуск может скачивать веса, поэтому заранее считать его полностью автономным нельзя.
Официальная документация проверена 12 октября 2026 года. В текущем руководстве по общему OCR модель по умолчанию относится к PP-OCRv6. В таблице совместимости русский код ru указан для PP-OCRv5, но отсутствует у PP-OCRv6. Поэтому в примере ниже версия и язык заданы явно. Это ограничение конкретной таблицы совместимости, а не утверждение обо всех инструментах проекта.
Команда сверена с документацией; PaddleOCR в этом выпуске мы не запускали. Проверили собственную программу сравнения и скачиваемый набор. Здесь нет измерений скорости, оценки качества распознавания или обещания, что команда без настройки заработает на любом компьютере.
Какие ошибки недопустимы в тексте после OCR?
Запишите правило приёмки до распознавания. Для нашего листа артикул должен совпасть посимвольно, количество и обе денежные записи должны сохранить цифры и разделители. Дату нужно прочитать целиком. Для статуса отдельно решите, допустима ли замена «ё» на «е»: в учебной проверке она считается различием.
Такой список отделяет ошибку в данных от допустимой правки оформления. Например, перенос длинной строки сам по себе может не мешать чтению, а пропущенная запятая в цене меняет запись числа. Не объединяйте эти случаи в одну оценку «выглядит нормально». Укажите, что будете исправлять вручную, а что потребует повторного распознавания.
Для своего документа составьте собственный эталон по изображению. Если проверяете только фрагмент, сохраните отдельный снимок этого фрагмента и соответствующие ему строки. Нельзя сравнивать распознавание целой страницы с эталоном одной строки и считать остальные блоки ошибками модели.
Как подготовить изображение и эталон до запуска?
Начните с копии изображения. Сохраните оригинал отдельно, чтобы после обрезки или поворота можно было вернуться к исходной версии. Обрезайте пустые поля только после того, как убедились, что на краю нет части артикула, знака минус или подписи к числу. Такие детали легко потерять ещё до распознавания.
Откройте снимок в обычном просмотрщике и увеличьте подозрительные места. Если вы сами не различаете цифру, не включайте её в эталон как установленный факт. Выберите другой кадр или переснимите фрагмент. В заметке сохраните причину замены входа: иначе следующему проверяющему будет непонятно, почему старый отчёт относится к другому изображению.
Эталон перепишите вручную с оригинала. Сначала проверьте текст сверху вниз, затем отдельно пройдите по числам и кодам. Для короткого учебного листа это позволяет проверить каждое поле, не полагаясь на общий вид абзаца. Не создавайте эталон копированием того же OCR-ответа: одинаковая ошибка попадёт в оба файла и исчезнет из отчёта.
Сохраните эталон как обычный UTF-8 TXT. Для первой попытки не включайте автоматические замены кавычек, дефисов и пробелов в редакторе. Когда сравнение покажет различия, вы сможете отдельно решить, какие замены допустимы в окончательном документе. Сырые файлы оставьте без этих исправлений.
Как проверить утилиту на испорченном тексте?
Распакуйте архив целиком, откройте терминал в полученной папке и выполните команду. В Windows вместо python3 при необходимости используйте py -3. Укажите новое имя отчёта: программа откажется перезаписывать существующий файл.
Откройте demo-report.txt обычным текстовым редактором. Знак минус в начале строки показывает эталон, плюс показывает проверяемый текст. Ниже программа выводит коды символов различающихся строк. Так видно, почему две внешне одинаковые буквы не совпали: кириллическая С имеет код U+0421, латинская C имеет код U+0043.
Для этого примера ожидается код завершения 1: различия найдены, демонстрация прошла как задумано. Код 0 означает совпадение, код 2 сообщает об ошибке входа или записи. Чтобы увидеть вариант без расхождений, передайте reference.txt вторым файлом вместо demo-errors.txt и задайте другое имя отчёта.
python3 check_ocr.py reference.txt demo-errors.txt --report demo-report.txtТаблицу можно листать вбок.
| Эталон | Учебная ошибка |
|---|---|
| Артикул: АС-010. С кириллическая. | Артикул: АC-010. C латинская. |
| Цена: 1 250,50 | Цена: 1 250.50 |
| Сумма: 10 004,00 | Сумма: 10 040,00 |
| Статус: ещё не проверено | Статус: еще не проверено |
Таблица редакции по источникам в конце материала, проверено 12 октября 2026.
Распознайте ровное изображение с явным выбором языка
Для установленного окружения можно использовать следующую команду одной строкой. Она берёт sample.png из текущей папки, задаёт русский язык, PP-OCRv5 и вычисления на CPU, сохраняет результат в output. Ключи сверены с разделом Command Line Usage официального руководства.
В учебном PNG строки расположены горизонтально. Поэтому в примере отключены классификация ориентации документа, исправление изгиба и ориентация строк. Это решение для нашего ровного листа. Если у вас повёрнутая фотография или страница с изгибом, не переносите настройки механически: сначала осмотрите вход.
Сохраните использованную команду и сведения об установленных пакетах. Перед повторной попыткой меняйте один параметр и оставляйте предыдущий результат в отдельной папке. Если одновременно сменить изображение, версию модели и настройки, причину отличий будет трудно установить.
paddleocr ocr -i sample.png --lang ru --ocr_version PP-OCRv5 --device cpu --use_doc_orientation_classify False --use_doc_unwarping False --use_textline_orientation False --save_path outputПередайте сохранённые строки в сравнение
В результате общего OCR поле rec_texts содержит распознанные строки, rec_scores содержит оценки уверенности. В папке output найдите JSON именно учебного изображения и подставьте его настоящее имя вместо your-result.json в команду ниже.
Наша утилита принимает один JSON-объект с массивом строк rec_texts в корне или внутри res. Текст, скопированный из консоли с одинарными кавычками и array(...), не является JSON. Если экспорт вашей версии устроен иначе, сохраните распознанные строки в actual.txt с кодировкой UTF-8 и передайте этот файл вместо JSON. Не исправляйте символы до первого сравнения.
Программа сохраняет порядок элементов массива. Если OCR разделил одну строку на несколько блоков, отчёт покажет это как различие. Посмотрите на изображение и рамки распознавания, затем запишите, что изменилось: символы, порядок или только разбиение. Исходный экспорт оставьте отдельным файлом.
Оценку уверенности мы в решение о приёмке не включаем. Для этого упражнения достаточно точного сравнения с проверенным эталоном. Совпадение с ошибочно переписанным эталоном тоже будет совпадением, поэтому сам эталон нужно вычитать по изображению.
python3 check_ocr.py reference.txt output/your-result.json --report my-report.txtКак разобрать расхождения по оригиналу?
Начните с артикула. Сравните обе буквы, дефис и каждую цифру. Не заменяйте все латинские символы на похожие русские автоматически: в настоящем коде латиница может быть правильной. Решение принимает человек, который видит исходную запись и знает правила кодирования.
Затем сверьте цену и сумму. В нашем примере 1 250,50 × 8 = 10 004,00. Арифметика помогает заметить несогласованность, но не выбирает верную строку за вас: неверными могут оказаться цена, количество или сумма. Сначала перепишите каждое поле по изображению, потом повторите расчёт.
Проверьте разделители разрядов и дробной части до переноса в таблицу. Строка с запятой может остаться текстом при импорте с другими настройками. После импорта сравните видимое значение с оригиналом ещё раз. Сам факт, что ячейка стала числовой, не подтверждает правильность распознавания.
Порядок чтения проверьте отдельно. Если на странице есть колонки, соседство двух блоков в экспортированном тексте ещё не означает, что они относятся друг к другу. Наш одноколоночный лист не проверяет восстановление таблиц и сложной вёрстки. Для них нужен отдельный пример с проверкой связей между строками и столбцами.
Что утилита сравнивает и чего не исправляет?
Сравнение сохраняет регистр, пробелы, цифры, пунктуацию и алфавит символов. При чтении TXT не учитываются BOM UTF-8 и тип окончания строк; завершающий перевод строки тоже не создаёт расхождение. Отдельная пустая строка внутри текста остаётся частью сравнения. Максимальный размер каждого входного файла составляет 2 000 000 байт.
Пустой эталон вызывает ошибку. Пустой результат при непустом эталоне даёт различие. Неподдерживаемая структура JSON вызывает понятное сообщение вместо попытки угадать нужное поле. Изображения программа не открывает: sample.png нужно сначала распознать либо сверить вручную.
Утилита не исправляет текст, не объединяет блоки и не выдаёт процент точности OCR. На длинной странице отчёт с кодами каждого символа может оказаться неудобным; тогда разделите проверку на логические фрагменты.
Для рабочего снимка используйте только документы, с которыми вправе работать. Наша программа ничего не отправляет в сеть, однако отчёт содержит проверяемый текст. Храните отчёт с теми же ограничениями доступа, что и исходный документ.
Что делать, если проверка остановилась?
Если исправили формат входа, сначала повторите учебную команду с demo-errors.txt. Она не зависит от окружения PaddleOCR и помогает отделить ошибку распознавания от ошибки подготовки файлов. При разборе проблем сохраняйте исходное сообщение терминала рядом с командой, но не добавляйте его к распознанным строкам.
Таблицу можно листать вбок.
| Что произошло | Что проверить |
|---|---|
| Команда paddleocr не найдена | Открыто ли окружение, в котором установлен PaddleOCR. Утилиту сравнения можно использовать независимо. |
| Язык или версия не поддерживаются | Сопоставьте установленные версии с документацией. Сохраните текст ошибки; не заменяйте ru на en ради запуска. |
| Ошибка JSON | Передан ли сохранённый файл, а не скопированная консоль. При другой структуре экспорта используйте TXT. |
| Отчёт уже существует | Задайте новое имя после --report. Программа защищает предыдущий результат от перезаписи. |
| Все строки отличаются | Сверьте кодировку, порядок блоков и соответствие эталона изображению. Начните с одного фрагмента. |
Таблица редакции по источникам в конце материала, проверено 12 октября 2026.
Сохраните результат, который можно проверить повторно
Оставьте в одной папке исходное изображение, эталон, неизменённый экспорт OCR, отчёт различий и исправленный текст. В короткой заметке укажите дату проверки, версии пакетов, команду и сделанные вручную исправления. Другой человек должен суметь отличить ответ инструмента от вашей окончательной версии.
Не переносите вывод с учебного листа на весь архив документов. Чистое горизонтальное изображение не показывает, как тот же набор настроек обработает блики, мелкий шрифт или несколько колонок. Перед массовой обработкой подберите примеры именно ваших сложных случаев и заранее определите, какие поля требуют ручной сверки.
Материалы набора подготовлены редакцией. Разрешаем бесплатно копировать и менять их для личных и рабочих задач; условия записаны в README.txt. Дата 11.10.2026 на учебном листе служит примером поля, а дата проверки источников относится к этому гайду. Никакого реального события или покупки за этими данными нет.