Ориентация документа, снятого на мобильный телефон, неправильная. Сначала обработайте 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 работает на скорректированном графе, координаты коробки соответствуют скорректированному графику. Необходимо записывать входные размерности, преобразования и выходные размеры, а обратные преобразования выполняются во время отображения.
📝 Краткое содержание
Для вопросов ориентации камеры сначала проверьте, нужно ли отображать или пиксельную ориентацию, затем определить ориентацию, наклон и перспективу соответственно. Перед тем как браться за важные документы, пожалуйста, сохраняйте оригиналы и проходите проверку.
Опыт сейчас: загрузите документ, чтобы начать перевод, сохраняя оригинальное форматирование


