Ответ:
QR-код может считываться после обрезания благодаря встроенной избыточной информации. В нём записаны не только сами данные, но и дополнительные служебные элементы. Эти дополнительные элементы помогают восстановить часть потерянных данных. Специальный алгоритм коррекции ошибок сравнивает сохранившиеся участки кода. По ним он определяет, какие фрагменты, вероятно, были повреждены или удалены. Поэтому небольшое повреждение не обязательно делает код нечитаемым. В QR-коде используются четыре уровня коррекции ошибок. Чем выше уровень коррекции, тем больше резервных данных добавляется к коду. При высоком уровне можно восстановить большую долю утраченной информации. Однако такой код занимает больше места, поэтому в нём помещается немного меньше полезных данных. Считыватель также использует три больших квадратных маркера, чтобы определить положение и наклон кода. Маленькие служебные элементы помогают выровнять изображение и правильно разделить его на модули. Если после обрезания сохранены нужные маркеры и повреждение не превышает допустимый предел, QR-код всё ещё может успешно считаться.
- L — около 7%. Восстанавливается примерно до 7% кодовых слов.
- M — около 15%. Обеспечивает более надёжное считывание и используется чаще всего.
- Q — около 25%. Подходит для условий с заметными повреждениями или загрязнением.
- H — около 30%. Даёт максимальную защиту, но уменьшает объём полезных данных.
Источники
- https://www.qrcode.com/en/about/error_correction.html
- https://www.denso-wave.com/en/system/qr/fundamental/
- https://en.wikipedia.org/wiki/QR_code
- https://www.thonky.com/qr-code-tutorial/error-correction-coding
- https://www.nayuki.io/page/creating-a-qr-code-step-by-step
- https://www.iso.org/standard/62021.html
