Чем скан отличается от фотографии документа
Различий четыре, и ни одно не про разрешение: по числу точек телефон догнал сканер давно, 345 DPI при плотном кадре тому подтверждение. Сканер прижимает лист к стеклу, поэтому геометрия точная, а свет равномерный. Камера снимает под углом, кладёт на лист тень и градиент яркости и добавляет к файлу тег ориентации, который разные браузеры применяют по-разному.
Коротко о цифрах
- Кадр 4032 точки, лист во весь кадр
- 345 DPI
- Проверка тега ориентации
- по эффекту: пробный снимок 2×1 с записанным поворотом
- Вставка снимка в PDF
- через холст, JPEG с качеством 0,95
- Общее у скана и снимка
- текстового слоя нет ни у одного
- Главное различие
- геометрия и свет, а не число точек
Четыре различия по порядку
- Геометрия. У скана прямые углы и постоянный масштаб по всему листу; у снимка верх и низ страницы сняты с разного расстояния, поэтому строки внизу мельче.
- Свет. Сканер освещает лист равномерно движущейся лампой; камера работает с тем светом, что есть в комнате, и почти всегда даёт градиент яркости от края к краю.
- Края. У скана фон — крышка сканера, ровная и одноцветная; у снимка вокруг листа виден стол, а сам лист обычно снят с полями и наклоном.
- Метаданные. Снимок несёт тег ориентации, дату и иногда координаты; у скана этих полей обычно нет вовсе, зато есть имя устройства в свойствах файла.
Что мы делаем с тегом ориентации
Тег ориентации — самая коварная часть снимка. Он не разворачивает пиксели, а лишь сообщает программе, как их показывать, и разные браузеры выполняют это по-разному. Проверять наличие нужного метода бесполезно: браузер может уметь его и не применять тег, а может не иметь метода, но всё показывать правильно.
Поэтому проверка идёт по эффекту. В коде зашит крошечный снимок размером две точки на одну с записанным тегом поворота: если декодер вернул его как одну точку на две, значит, браузеру можно верить и тег применяется. Если нет, тег читается вручную из данных файла. Ошибиться здесь дорого: перевёрнутая страница документа выглядит как испорченный файл.
При сборке PDF из снимков картинка проходит через холст и кодируется в JPEG с качеством 0,95 — именно так поворот попадает в пиксели, а не остаётся пометкой в метаданных. Скан такой обработки не требует: у него ориентация уже записана в самих точках.
Что из этого важно на практике
- Принимающая сторона обычно требует ровный лист без стола вокруг: снимок под это нужно кадрировать и обрезать, скан — почти никогда.
- Снимок тяжелее при том же размере страницы: неравномерный фон и градиент яркости кодируются как дополнительная информация.
- Распознавание устойчивее на скане: наклон и неравномерный свет сбивают его сильнее, чем нехватка сотни точек на дюйм.
- Ни скан, ни снимок не содержат текстового слоя: искать по такому документу нечего, пока к нему не добавили распознанный текст.
- При сборке PDF из снимков ставьте размер листа A4, а не «Авто», иначе страница получится размером с плакат.
Частые вопросы
Примут ли фотографию документа вместо скана?
Это решает принимающая сторона, и требования у всех разные — уточняйте у неё. Технически снимок отличается наклоном, неравномерным светом и видимым столом вокруг листа, и именно к этому обычно и придираются.
Почему снимок документа весит больше скана той же страницы?
Из-за фона и градиента яркости. Ровный фон сканера кодируется почти даром, а неравномерно освещённая бумага со столом по краям несёт куда больше различий между соседними точками.
Почему фотография переворачивается при загрузке?
Потому что ориентация в снимке хранится отдельным тегом, а не в самих пикселях. Мы проверяем поведение браузера пробным изображением и при необходимости читаем тег сами, чтобы страница не встала боком.
Можно ли из фотографии сделать настоящий скан?
Улучшить геометрию и свет задним числом нельзя, а вот привести снимок к приличному виду можно: обрезать стол по краям, собрать страницы в PDF на листах A4 и уменьшить вес сжатием.