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

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

— ImageOps.exif_transpose Pillow применяет информацию об ориентации и удаляет маркеры, но не обрабатывает наклон кадра или искажение перспективы.

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

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

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

Что делать, если документ, снятый на мой мобильный телефон, находится в неправильном направлении? Вывод в одно предложение

Сначала используйте ImageOps.exif_transpose, чтобы применить метку направления EXIF, а затем отправьте скорректированное изображение в OCR; Вопросы наклона и перспективы необходимо рассматривать отдельно.

твоя ситуацияРекомендуемые практикипричина
Вьювер отображает нормально, но результаты разбора кривыеСначала используйте ImageOps.exif_transpose, чтобы применить направление EXIF.Пиксели не вращаются, настраивается только слой отображения
Вся фотография слегка наклоненаОцените коррекцию наклона индивидуальноexif_transpose не обрабатывает углы съемки.
Бумага трапециевиднаяОбнаружение границ бумаги и выполнение коррекции перспективыИскажение перспективы не является проблемой ориентации EXIF
Необходимо сохранить поле, возвращенное OCR.Запишите размер ввода, преобразование ориентации и размер вывода одновременно.Координаты скорректированного изображения отличаются от исходного изображения.

Направление отображения и направление пикселей следует рассматривать отдельно.

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

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

Проверка границ вращения с помощью синтезированных пикселей

Следующий код использует составное изображение для проверки правильности применения маркеров ориентации:

from PIL import Image, ImageOps

source = Image.new("RGB", (40, 20), "white")
source.putpixel((0, 0), (255, 0, 0))
source.getexif()[274] = 6
fixed = ImageOps.exif_transpose(source)
assert fixed.size == (20, 40)
assert fixed.getpixel((19, 0)) == (255, 0, 0)
assert fixed.getexif().get(274) is None
assert source.size == (40, 20)
again = ImageOps.exif_transpose(fixed)
assert again.size == fixed.size
assert again.tobytes() == fixed.tobytes()

Красные пиксели в углах используются здесь, чтобы помочь проверить геометрические взаимосвязи без вызова механизма оптического распознавания символов или имитации реального текста. Таким образом, тест может только подтвердить вывод о том, что «маркеры направления применены правильно», но не может подтвердить, «насколько улучшилась скорость распознавания текста». Примеры зависят от Pillow и должны запускаться в заблокированных версиях.

Аномалии направления отклонения

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

наблюдатьВозможные причиныДалее
Просмотрщик обычный, а парсер — ландшафтныйEXIF не применяетсяПроверьте метку направления и пиксели
Вся страница слегка наклоненаУгол съёмкиНезависимая оценка коррекции наклона
Страницы трапециевидныеИскажение перспективыИсправление после проверки границ бумаги
Текст перевёрнут, но не отмеченМетаданные отсутствуютСудя по содержанию страницы, никаких слепых догадок

Запись координат должна начинаться после вращения

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

Если сохранено только одно поле без записи, к какому изображению оно принадлежит, позиция выделения будет вне текста.

Перед переводом правильно выровняйте изображение

При обработке отсканированных материалов через OCR и перевод OmniDoc (запись продукта) сначала можно проверить направление, сравнив его с оригиналом. Направление, перспектива и ясность — это три разных пункта проверки, которые необходимо проверять отдельно.

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

Источники: Pillow ImageOps.

📊 Сравнение ядра

Объект обработкиМетоды обработкиЭто делаетexif_transpose?
Направленный маркер EXIFРегулируйте пиксели по меткамДа
Вся страница слегка наклоненаКоррекция угла стрельбыНет, требуется независимая оценка
Страницы трапециевидныеКоррекция перспективыНет, границы бумаги должны быть проверены

🎯 Какой способ тебе подходит?

Если ты ......

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

❓ Часто задаваемые вопросы (FAQ)

1. exif_transpose Можешь выпрямить бумагу, которая криво показана в кадре?

Нет. Он корректирует пиксели только на основе направленных маркеров EXIF, не обрабатывая углы съемки или искажение перспективы, которые требуют дополнительной геометрической обработки.

2. Почему просмотрщик отображает нормальный результат, а OCR — горизонтальный?

Зритель применяет EXIF-маркер направления, в то время как сами пиксели могут не вращаться. Если OCR игнорирует этот маркер, он будет читать страницы в обратном направлении.

3. Может ли пример кода показать, насколько улучшился уровень распознавания?

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

4. Почему коробка, возвращаемая OCR, не совпадает с исходной позицией изображения?

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

📝 Краткое содержание

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

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

Обновлено 2026-11-11