код pdf в накладной что это значит
Код товара в накладной ТОРГ-12
Где в ТОРГ-12 нужно указывать код товара и что он означает
Код товара — это последовательность цифр и иных символов, позволяющая распознать определенный товар.
На рисунке ниже показано местоположение этого реквизита:
Можно сделать вывод о необязательности указания данного кода в накладной. Но претензии контролирующих органов возможны.
Что скажут налоговики, если код товара отсутствует
У контролеров могут возникнуть претензии — по их мнению, в унифицированном документе не может быть незаполненных строк и граф. Иначе он перестает считаться полноценным первичным документом.
Однако не все компании готовы идти в суд и спорить с контролерами. Чтобы снизить риск возникновения претензий у налоговиков, можно воспользоваться их же разъяснениями. Правда, они не касаются напрямую ТОРГ-12, а связаны с заполнением УПД (универсального передаточного документа). Тем не менее для ТОРГ-12 эти разъяснения тоже подходят, так как УПД объединяет информацию из ТОРГ-12 и счета-фактуры.
Подробнее об УПД вы можете узнать здесь.
Правила заполнения ТОРГ-12 разъяснили эксперты КонсультантПлюс:
Если у вас нет доступа к системе К+, получите пробный онлайн-доступ бесплатно.
Как, по мнению ФНС России, можно заполнить в первичном документе реквизит «Код товара» и как судьи решают этот вопрос, смотрите на схеме:
Налогоплательщик самостоятельно может определить порядок заполнения кода товаров в накладной ТОРГ-12. Учитывая, что большинство компаний и ИП используют автоматизированные учетные бухгалтерские программы, сложностей с кодировкой возникать не должно — в такой программе, при отсутствии специальной товарной кодировки, код товара присваивается автоматически при занесении товара в справочник.
Как должен выглядеть код и откуда его взять
Отсутствие каких-либо нормативных требований в отношении вида кода товара для ТОРГ-12 позволяет сделать вывод о том, что этот реквизит может содержать в своем составе и буквы, и цифры. В его составе могут быть и разделительные знаки (тире, точки и др.) Возьмем для наглядности в качестве кода товара его артикул.
Как может выглядеть код товара (товарный артикул)? Например, так: РА42108, 456rr892.1, 18976-09 и т. д. Всё зависит от принятой поставщиком товара (или его производителем) системы кодировки.
В качестве кода товара для указания в ТОРГ-12 могут также применяться коды из Общероссийского классификатора продукции по видам деятельности ОК 034-2014 (КПЕС 2008), утв. приказом Росстандарта от 31.01.2014 № 14-ст. Например:
Об электронном формате ТОРГ-12 рассказано в этой публикации.
Что делать, если в ТОРГ-12 нашли ошибку? Изучите мнение экспертов КонсультантПлюс, получив пробный бесплатный доступ к системе К+.
Итоги
Заполнять или нет графу с кодом товара в накладной ТОРГ-12, решает самостоятельно каждый налогоплательщик. Пояснения о том, как ее заполнить, в законодательстве отсутствуют. Но оставлять ее незаполненной тоже рискованно — налоговики могут не признать такой документ в качестве первичного учетного документа. Чтобы избежать претензий контролеров можно проставить в ней артикул или иной код, разработанный самим налогоплательщиком.
Как заполнить транспортную накладную
С 1 января 2021 года изменилась форма транспортной накладной при перевозке грузов автомобильным транспортом. Разберём изменения и дадим инструкцию по заполнению.
Новая форма транспортной накладной в 2021 году
С 1 января 2021 года по 1 января 2027 года действует новая форма транспортной накладной (Постановление Правительства от 21.12.2020 № 2200). Она дана в Приложении № 4. В бланк добавили несколько граф, которых раньше не было.
С 1 января 2022 года транспортную накладную можно будет составлять в электронной форме. Формат электронной транспортной накладной должна утвердить ФНС совместно с Минтрансом и Минцифры.
Когда нужна транспортная накладная
Транспортная накладная — это первичный документ, которым оформляют автомобильные грузоперевозки по России. Она подтверждает реальность сделки и расходы на перевозку. В накладной грузоотправитель и перевозчик утверждают условия перевозки.
Если транспортной накладной нет, она утрачена или оформлена неправильно, организация может подтвердить расходы другими документами: договором, счетом-фактурой, платежными документами (Постановление Пленума Верховного Суда РФ от 26.06.2018 № 26).
Накладная понадобится, когда продавец доставляет груз покупателю на своем автотранспорте. Исключение — если цена доставки входит в цену товара. Еще накладная нужна, когда продавец или покупатель нанимают для доставки груза стороннюю транспортную компанию.
Покупатели, которые забирают груз самовывозом на своей машине, транспортную накладную не оформляют, так как услугу транспортировки никто не оказывает. Расходы на транспорт и саму перевозку можно будет подтвердить путевым листом, зарплатными ведомостями и другими документами.
Кто оформляет транспортную накладную
Транспортные накладные обычно выписывает организация, которая заказывает перевозку груза (грузоотправитель). Заказчиком может быть продавец или сам покупатель. К примеру, если покупатель заказал перевозку в транспортной компании, то он будет грузоотправителем и составит транспортную накладную. С 2021 года в роли грузоотправителя может выступать и экспедитор.
В договоре перевозки стороны могут выбрать, кто будет выписывать накладную. Например, поручить это самому перевозчику.
Сколько экземпляров накладной составлять
Транспортные накладные составляют на бумаге в трех экземплярах — по одному для каждого участника перевозки: грузополучателя, грузоотправителя и транспортной компании. Все экземпляры должны быть заверены подписями грузоотправителя и перевозчика.
Транспортная накладная формируется на каждую машину. Если в один автомобиль погрузили несколько партий груза, будет достаточно одной накладной. Но если одну партию распределили на несколько машин — понадобится накладная на каждый автомобиль.
Накладную составляет грузоотправитель, а во время провоза ее дополняет перевозчик. Получатель вносит свои данные на приемке груза. В итоге в составлении документа принимают участие три стороны.
Как заполнить транспортную накладную
Есть несколько общих правил, которых все должны придерживаться при работе с транспортной накладной:
Далее подробно разберем порядок заполнения каждой из сторон.
Как заполнить грузоотправителю
Грузоотправителем может быть продавец, покупатель или экспедитор. Например, если покупатель нанял перевозчика, чтобы самовывозом забрать товар со склада продавца, то покупатель будет и грузоотправителем, и грузополучателем.
Грузоотправитель заполняет шапку накладной: дату, номер документа, номер экземпляра (документ составляется в количестве трех штук, каждый экземпляр имеет свой номер), дату и номер заявки. Дополнительно он оформляет разделы, 1–7, 15 и 16.
Раздел 1 «Грузоотправитель». Укажите ФИО физлица или наименование организации, ИНН, адрес, телефон. Если перевозку оплачивает экспедитор, то он и будет грузоотправителем, в таком случае проставляется отметка «является грузоотправителем» и заполняется подраздел 1а (при необходимости).
Раздел 2 «Грузополучатель». Заполните аналогично первому разделу, но данными получателя груза.
Раздел 3 «Груз». Этот раздел достаточно объемный, он включает данные о перевозимом грузе по пяти пунктам: наименование, количество грузовых мест, масса и габариты, перечень опасных веществ — заполняйте на провоз опасного груза, объявленная ценность. Если данных для заполнения нет, разрешается поставить прочерк.
Новый показатель, объявленную ценность, можно взять из товарной накладной или УПД. Она не должна превышать действительную стоимость груза. В ряде случаев ее нельзя указывать (п. 78 Правил перевозок грузов автомобильным транспортом).
Контур.Маркет распознает товары в скане накладной и сопоставит с вашим каталогом
Раздел 4 «Сопроводительные документы на груз». В этом разделе надо привести реквизиты прилагаемых к накладной документов. Сюда входят товарные накладные, УПД, сертификаты, паспорта, разрешения на груз и пр. При их наличии у налоговой будет меньше причин сомневаться в сделке.
Раздел 5 «Указания грузоотправителя». В этом разделе нужно прописать указания, которые транспортная компания должна соблюдать во время перевозки груза: сроки, температурный режим, санитарные и карантинные требования и пр. Дополнительно указываются характеристики автомобиля, на котором повезут груз: тип, марка, грузоподъемность, вместимость и пр.
Раздел 6 «Прием груза». Впишите данные лица, от которого перевозчик забирает груз, адрес склада, дату и время получения груза. При погрузке указываются уже фактические дата и время прибытия и отбытия машины, описывается состояние груза, его масса, количество занятых мест. Раздел должен быть заверен подписями лица, у которого забирают груз, водителя и грузоотправителя (при необходимости).
Не отражайте данные о лице, которому до погрузки передали груз по документам, если фактически его не перемещали (Письмо Минтранса России от 26.03.2021 № Д3/6976-ИС).
Раздел 7 «Сдача груза». Тут отражается адрес места выгрузки (склад покупателя, терминал транспортной компании), дата и время доставки.
Раздел 15 «Подписи сторон» и раздел 16 «Стоимость услуг перевозчика и порядок расчета провозной платы». Должностное лицо грузоотправителя ставит свою подпись, указывает ФИО и должность.
Как заполнить перевозчику
При погрузке водитель перевозчика ставит свою подпись в разделе 6 «Прием груза», а при разгрузке — в разделе 7 «Сдача груза». Перевозчик самостоятельно заполняет разделы 8-11, 13, 15 и 16. При необходимости можно заполнить разделы 12, 14 и 17.
Раздел 8 «Условия перевозки». Здесь перевозчик прописывает, когда груз можно считать утраченным, размер платы за хранение в терминале, размеры штрафов за невывоз груза, задержку транспорта и пр. Часто его оставляют пустым — это значит, что все условия определяются по общим правилам Устава автомобильного транспорта.
Раздел 9 «Информация о принятии к исполнению». В разделе проставляется дата приема заказа, ФИО и должность принявшего и его подпись. У перевозчика есть три дня на рассмотрение заявки грузоотправителя.
Раздел 10 «Перевозчик». Заполняется сведениями о перевозчике: наименование или ФИО, ИНН, адрес, номер телефона. Дополнительно указываются информация о водителе и его контакты.
Раздел 11 «Транспортное средство». Перевозчик указывает сведения об автомобиле, на котором повезут груз: тип, марку, грузоподъемность, вместимость, регномер. Дополнительно надо выбрать тип владения: собственность, лизинг или аренда.
Если транспорт не соответствует требованиям грузоотправителя, заявленным в разделе 5, то он может отказаться от погрузки (п. 31 Правил, утв. постановлением Правительства от 21.12.2020 № 2200).
Раздел 12 «Оговорки и замечания перевозчика». Если при погрузке у перевозчика появились вопросы к состоянию самого груза, упаковке, маркировке, таре и пр., их можно отметить в этом разделе.
Раздел 13 «Прочие условия». Здесь указывают номер, дату и срок действия разрешения на перевозку, данные о маршруте при перевозке крупногабаритных или опасных грузов, режиме работы водителей.
Раздел 14 «Переадресовка». Этот раздел заполняет водитель, если во время поездки изменился адрес доставки.
Раздел 15 «Подписи сторон» должностное лицо перевозчика ставит свою подпись, указывает ФИО и должность.
Раздел 16 «Стоимость услуг перевозчика и порядок расчета провозной платы». Перевозчик указывает стоимость услуги по перевозке, провозную плату и порядок ее расчета, расходы перевозчика, НДС, наименование, адрес и банковские реквизиты грузоотправителя и перевозчика. Также тут проставляются подписи должностных лиц с расшифровкой.
Важно! Транспортная накладная подтверждает расходы на перевозку, если в ней есть все необходимые реквизиты и правильно заполнен раздел 16 (письма ФНС от 19.04.2021 № СД-4-2/5238@, от 20.02.2021 № СД-3-3/1280@). Если нет раздела 16, к транспортной накладной должен прилагаться другой первичный документ, который определяет цену перевозки. Например, универсальный передаточный документ.
Как заполнить грузополучателю
Грузополучатель должен заполнить раздел 7 «Сдача груза» в присутствии перевозчика. Он указывает:
Состояние груза, его массу и количество занятых мест можно не проверять, если все приехало на исправном закрытом транспортном средстве, в контейнере и с пломбами. При повреждении или отсутствии пломб проверка обязательна, как и при нарушении сроков доставки скоропортящихся грузов (п. 9 ст. 15 Закона от 08.11.2007 № 259-ФЗ).
Приемку груза подтверждает представитель получателя, он ставит свою подпись, ФИО и должность.
Раздел 17 «Отметки грузоотправителей, грузополучателей, перевозчиков». Его может заполнить любая из сторон, если у нее есть претензии: найдены нарушения условий провоза груза, его порча, повреждение упаковки и т.д. Пострадавшая сторона ставит отметку об оформлении акта, а подробное описание претензий приводит в акте об установлении расхождений по количеству и качеству.
Как исправить ошибку в транспортной накладной
Если в накладной допустили ошибку, её разрешено исправить прямо в бумажном документе. Алгоритм следующий:
Не пропустите новые публикации
Подпишитесь на рассылку, и мы поможем вам разобраться в требованиях законодательства, подскажем, что делать в спорных ситуациях, и научим больше зарабатывать.
Коды step-by-step: читаем / кодируем PDF417
Вы ведь любите коды? Ну или не любите. В любом случае, иногда нужно знать, как правильно ими пользоваться. Можно пойти длинным путём, как это сделал я в прошлый раз, но когда времени нет, проще воспользоваться инструкцией.
Итак, давайте разберёмся со всем необходимым для чтения и / или записи PDF417. Ведь не всегда под рукой найдётся смартфон с программой для их чтения. А для записи — и подавно.
Внимание, под катом — 9 изображений общим размером в 2.79 МБ, 6 таблиц и немного формул.
Оглавление
01. История PDF417 и право использования
PDF417 придумали в компании Symbol Technologies Inc. в 1991 году, а 7 сентября 1993 года на него был выдан патент США под номером 5 243 655 (доступен, к примеру, здесь). На самом деле, патент описывает не просто метод кодирования, а комплексную систему для кодирования и декодирования информации («System for encoding and decoding data in machine readable graphic form»). Кроме того, не все из рекомендаций в патенте используются на данный момент.
Сразу стоит отметить, что использовать PDF417 можно свободно, без лицензирования или правовых ограничений.
Единственный подводный камень: если вы хотите точно соответствовать стандарту ISO/IEC 15438:2015, описывающему PDF417, — доступ к нему стоит 198 CHF (швейцарских франков). Именно он описывает все необходимые словари и прочее, однако большую часть информации можно легко найти в интернете. Патент, упомянутый выше, этой информации не содержит.
02. Графическое представление и структура
Каждый символ (код) PDF417 (Рис. 1) — это набор строк информации, представленной в виде штрихового кода. Каждая строка состоит из стартового паттерна, набора ключевых слов (два из которых называются левым и правым индикаторами и помогают в автоматизированном декодировании) и стоп паттерна. Слова из разных строк формируют колонки (столбцы).
Как количество строк, так и количество столбцов может варьироваться. Символ PDF417 может состоять из минимум 3 и максимум 90 строк, а также от 3 до 30 столбцов включительно.
Рис. 1. Структура PDF417 символа
Каждое слово состоит из 17 модулей (минимальных элементов), которые образуют чередующуюся последовательность из 4 заполненных и 4 пустых групп. Одна группа может быть длиной от 1 до 6 модулей.
Каждое слово представляют в виде уникальной последовательности (
). Все возможные слова делятся на 3 взаимоисключающие группы (кластера), то есть в каждом кластере содержаться одни и те же «значения», представленные разными «словами». Кроме того, слова могут быть представлены в виде
последовательности, где каждое значение
. Это также помогает избежать ошибок при сканировании кодов.
Каждая строка PDF417 символа использует только один из кластеров последовательно. Таким образом, если один из кластеров используется строками , то второй — строками
, а третий — строками
. Это нужно для правильного определения строки при автоматическом сканировании (Рис. 2), поскольку соседние строки не могут содержать слова одной группы.
Номер кластера однозначно определяется из или
последовательности по одной из формул:
,
,
где — остаток от деления на 9.
На самом деле, можно было бы использовать не 3 разных кластера, а все 9 возможных, но это увеличило бы вероятность дополнительных ошибок. Номер кластера можно определить также из номера строки: .
Всего PDF417 использует 929 слов (от 000 до 928 ).
03. Компоненты символа
Рис. 2. Компоненты символа PDF417
04. Режимы
Как уже было сказано, коды PDF417 содержат слова от 000 до 928 в виде трёх разных кластеров. Таким образом, в коде может встретиться всего 2 787 разных слов.
Слова от 000 до 899 включительно используются для записи полезной информации в одном из возможных режимов кодирования.
## | Функция | Описание |
---|---|---|
900 | Текстовый режим (TC) | |
901 | Байт-режим (BC) | |
902 | Числовой режим (NC) | |
903: 912 | Зарезервировано | Используются для пользовательских надстроек |
913 | Байт-режим | Только для следующего слова |
914: 920 | Зарезервировано | Используются для пользовательских надстроек |
921 | Инициализация | Слова далее будут интерпретированы для инициализации или программирования сканера |
922 | PDF macro | Конец блока |
923 | PDF macro | Опциональное поле |
924 | Байт-режим | Если количество байтов кратно 6 |
925 | ECI / GLI | Определяется пользователем |
926 | ECI / GLI | Общие наборы символов |
927 | ECI / GLI | Международные наборы символов |
928 | PDF macro | Начало блока |
Табл. 1. Сервисные слова PDF417. Выделены те, которые будут нам интересны
PDF macro позволяет разбить длинное сообщение на несколько PDF417 символов. При этом каждый символ содержит идентификатор сообщения, порядковый номер блока сообщения (для восстановления правильной последовательности) и другую информацию.
ECI / GLI — Extended Channel Interpretation / Global Label Identifier — система надстроек, которая позволяет кодировать нестандартные символы с помощью штриховых кодов. Так, возможно подключить один из международных наборов символов (к примеру, стандартным является GLI 0, именно эти таблицы приведены далее), наборов общего назначения либо ваших персональных наборов символов.
04.a) Текстовый режим (TC, Text Compaction Mode)
Этот режим стандартный для символов PDF417 (то есть именно с него начинается весь символ). У текстового режима есть 4 разных подгруппы:
## | Alpha Символ (ASCII) | Lower case Символ (ASCII) | Mixed Символ (ASCII) | Punctuation Символ (ASCII) |
---|---|---|---|---|
0 | A (65) | a (97) | 0 (48) | ; (59) |
1 | B (66) | b (98) | 1 (49) | (62) |
3 | D (68) | d (100) | 3 (51) | @ (64) |
4 | E (69) | e (101) | 4 (52) | [ (91) |
5 | F (70) | f (102) | 5 (53) | \ (92) |
6 | G (71) | g (103) | 6 (54) | ] (93) |
7 | H (72) | h (104) | 7 (55) | _ (95) |
8 | I (73) | i (105) | 8 (56) | ` (96) |
9 | J (74) | j (106) | 9 (57) | |
10 | K (75) | k (107) | & (38) | ! (33) |
11 | L (76) | l (108) | CR (13) | CR (13) |
12 | M (77) | m (109) | HT (9) | HT (9) |
13 | N (78) | n (110) | , (44) | , (44) |
14 | O (79) | o (111) | : (58) | : (58) |
15 | P (80) | p (112) | # (35) | LF (10) |
16 | Q (81) | q (113) | — (45) | — (45) |
17 | R (82) | r (114) | . (46) | . (46) |
18 | S (83) | s (115) | $ (36) | $ (36) |
19 | T (84) | t (116) | / (47) | / (47) |
20 | U (85) | u (117) | + (43) | » (34) |
21 | V (86) | v (118) | % (37) | | (124) |
22 | W (87) | w (119) | * (42) | * (42) |
23 | X (88) | x (120) | = (61) | ( (40) |
24 | Y (89) | y (121) | ^ (94) | ) (41) |
25 | Z (90) | z (122) | pl | ? (63) |
26 | SP (32) | SP (32) | SP (32) | < (123) |
27 | ll | as | ll | > (125) |
28 | ml | ml | al | ‘ (39) |
29 | ps | ps | ps | al |
Табл. 2. Подгруппы текстового режима в стандартной интерпретации GLI 0
Одно слово в базисе 900 содержит 2 символа из таблицы выше по правилу:
,
Где — значение в базисе 900,
— первый символ,
— второй. Иногда символы указывают как
и
соответственно.
Если данные заканчиваются словом, в которое нужно включить только один символ, то он является -значением, а в качестве
-значения используется значение 29.
Использование ещё одного перехода после shift-перехода запрещено. Ограничений на использование переходов после latch-перехода нет.
04.b) Байт-режим (BC, Byte Compaction Mode)
Данный режим позволяет записывать последовательность байтов с помощью последовательности кодовых слов в базисе 900. Для этого нужно совершить переход от базиса 256. Этот режим включается двумя разными сервисными словами:
Рис. 3. Кодирование, байт-режим
Тогда код должен содержать следующую последовательность слов:
04.c) Числовой режим (NC, Numeric Compaction Mode)
Числовой режим позволяет записать данные с помощью перехода из базиса с основой 10 в базис с основой 900. Соответственно, такой режим поддерживает запись цифр от 0 до 9. В результате, каждые 44 цифры можно записать в виде 15 слов.
Для перехода в базис 900 нужно дописать 1 к числу слева, а дальше выполнить переход как показано на Рис. 4. Обратный переход вполне очевидный, остаётся лишь убрать лишнюю 1 слева.
Рис. 4. Кодирование и декодирование, числовой режим
05. Коррекция ошибок
Давайте начнём с самого простого. В любом символе PDF417 присутствует как минимум 2 слова в области ответственной за коррекцию ошибок. Кроме того, коды характеризуются уровнем коррекции ошибок, для которых нужно разное количество дополнительных символов (Табл. 3).
Уровень | Количество дополнительных слов как это указывается (как это описано в патенте) |
---|---|
0 | 2 (0) |
1 | 4 (2) |
2 | 8 (6) |
3 | 16 (14) |
4 | 32 (30) |
5 | 64 (62) |
6 | 128 (126) |
7 | 256 (254) |
8 | 512 (510) |
Табл. 3. Уровни коррекции ошибок в PDF417
Различают два вида ошибок:
Введём следующие параметры:
количество систематических ошибок;
количество случайных ошибок;
уровень коррекции;
количество слов для коррекции ошибок.
Тогда выполняется следующее условие:
2 слова, которые присутствуют в символе в любом случае, используются для проверки, не возникла ли случайная ошибка при распознавании.
Вводится также понятие Error Correction Capacity, которое показывает, сколько же ошибок обоих видов мы можем исправить. Очевидно, что если все дополнительные слова используются для исправления систематических ошибок, то шанс случайной возрастает. Потому для всех уровней, кроме , считается, что:
.
Именно потому в патенте количество слов для коррекции ошибок на 2 меньше, чем его часто указывают сейчас. Эти 2 слова правильно называть контрольной суммой.
К примеру, с уровнем коррекции , можно исправить 13 систематических ошибок, либо 7 случайных, либо их комбинацию, которая всё ещё соответствует неравенству (9 систематических И 2 случайных и т.д.).
Для коррекции ошибок используются коды Рида-Соломона в поле Галуа . На данный момент я не буду на них останавливаться.
Существуют также рекомендации относительно минимального уровня коррекции ошибок (Табл. 4).
Количество слов-данных | Уровень коррекции ошибок |
---|---|
0: 40 | 2 |
41: 160 | 3 |
161: 320 | 4 |
321: 863 | 5 |
Табл. 4. Минимальный рекомендуемый уровень коррекции ошибок
06. Обязательные неинформационные слова
Как упоминалось раньше (Раздел 03), первое слово каждого кода означает длину полезных данных в символе PDF417.
Кроме того, каждый код содержит левые и правые индикаторы, которые помогают в распознавании символа. Как и обычные слова, они используют разные кластеры словаря, а кроме того, циклически содержат информацию о количестве строк в коде, количестве столбцов, а также уровне коррекции ошибок (Рис. 5).
Рис. 5. Правила записи левых и правых индикаторов
07. Словари
Как упоминалось ранее (Раздел 02), словарь PDF417 состоит из 3 кластеров (0, 3 и 6) по 929 слов. Периодически их представляют в виде 17-битного числа, но я считаю такой вариант неудобным в сравнении с x-последовательностью. В любом случае, вы вольны решать, как вам удобнее, а потому выше приведены ссылки на оба варианта записи, а начало словарей приведено в Табл. 5.
## | Кластер 0 | Кластер 3 | Кластер 6 |
---|---|---|---|
0 | 31111136 | 51111125 | 21111155 |
1 | 41111144 | 61111133 | 31111163 |
2 | 51111152 | 41111216 | 11111246 |
3 | 31111235 | 51111224 | 21111254 |
4 | 41111243 | 61111232 | 31111262 |
5 | 51111251 | 41111315 | 11111345 |
6 | 21111326 | 51111323 | 21111353 |
7 | 31111334 | 61111331 | 31111361 |
8 | 21111425 | 41111414 | 11111444 |
9 | 11111516 | 51111422 | 21111452 |
10 | 21111524 | 41111513 | 11111543 |
11 | 11111615 | 51111521 | 61112114 |
12 | 21112136 | 41111612 | 11112155 |
13 | 31112144 | 41112125 | 21112163 |
14 | 41112152 | 51112133 | 61112213 |
15 | 21112235 | 61112141 | 11112254 |
16 | 31112243 | 31112216 | 21112262 |
17 | 41112251 | 41112224 | 61112312 |
18 | 11112326 | 51112232 | 11112353 |
19 | 21112334 | 31112315 | 21112361 |
20 |
Табл. 5. Первые 20 слов словаря в виде x-последовательностей
08. Стандартная 8-битная таблица символов
GLI 0
В качестве стандартной таблицы символов используется ASCII таблица для символов 0:127. Символы 128:255 представлены расширенным набором PC 437.
## | Символ | ## | Символ | ## | Символ | ## | Символ | ## | Символ | ## | Символ | ## | Символ | ## | Символ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | NUL | 32 | SP | 64 | @ | 96 | ` | 128 | Ç | 160 | á | 192 | └ | 224 | α |
1 | SOH | 33 | ! | 65 | A | 97 | a | 129 | ü | 161 | í | 193 | ┴ | 225 | ß |
2 | STX | 34 | « | 66 | B | 98 | b | 130 | é | 162 | ó | 194 | ┬ | 226 | Γ |
3 | ETX | 35 | # | 67 | C | 99 | c | 131 | â | 163 | ú | 195 | ├ | 227 | π |
4 | EOT | 36 | $ | 68 | D | 100 | d | 132 | ä | 164 | ñ | 196 | ─ | 228 | Σ |
5 | ENQ | 37 | % | 69 | E | 101 | e | 133 | à | 165 | Ñ | 197 | ┼ | 229 | σ |
6 | ACK | 38 | & | 70 | F | 102 | f | 134 | å | 166 | ª | 198 | ╞ | 230 | µ |
7 | BEL | 39 | ‘ | 71 | G | 103 | g | 135 | ç | 167 | º | 199 | ╟ | 231 | τ |
8 | BS | 40 | ( | 72 | H | 104 | h | 136 | ê | 168 | ¿ | 200 | ╚ | 232 | Φ |
9 | HT | 41 | ) | 73 | I | 105 | i | 137 | ë | 169 | ⌐ | 201 | ╔ | 233 | Θ |
10 | LF | 42 | * | 74 | J | 106 | j | 138 | è | 170 | ¬ | 202 | ╩ | 234 | Ω |
11 | VT | 43 | + | 75 | K | 107 | k | 139 | ï | 171 | ½ | 203 | ╦ | 235 | δ |
12 | FF | 44 | , | 76 | L | 108 | l | 140 | î | 172 | ¼ | 204 | ╠ | 236 | ∞ |
13 | CR | 45 | — | 77 | M | 109 | m | 141 | ì | 173 | ¡ | 205 | ═ | 237 | φ |
14 | SO | 46 | . | 78 | N | 110 | n | 142 | Ä | 174 | « | 206 | ╬ | 238 | ε |
15 | SI | 47 | / | 79 | O | 111 | o | 143 | Å | 175 | » | 207 | ╧ | 239 | ∩ |
16 | DLE | 48 | 0 | 80 | P | 112 | p | 144 | É | 176 | ░ | 208 | ╨ | 240 | ≡ |
17 | DC1 | 49 | 1 | 81 | Q | 113 | q | 145 | æ | 177 | ▒ | 209 | ╤ | 241 | ± |
18 | DC2 | 50 | 2 | 82 | R | 114 | r | 146 | Æ | 178 | ▓ | 210 | ╥ | 242 | ≥ |
19 | DC3 | 51 | 3 | 83 | S | 115 | s | 147 | ô | 179 | │ | 211 | ╙ | 243 | ≤ |
20 | DC4 | 52 | 4 | 84 | T | 116 | t | 148 | ö | 180 | ┤ | 212 | ╘ | 244 | ⌠ |
21 | NAK | 53 | 5 | 85 | U | 117 | u | 149 | ò | 181 | ╡ | 213 | ╒ | 245 | ⌡ |
22 | SYN | 54 | 6 | 86 | V | 118 | v | 150 | û | 182 | ╢ | 214 | ╓ | 246 | ÷ |
23 | ETB | 55 | 7 | 87 | W | 119 | w | 151 | ù | 183 | ╖ | 215 | ╫ | 247 | ≈ |
24 | CAN | 56 | 8 | 88 | X | 120 | x | 152 | ÿ | 184 | ╕ | 216 | ╪ | 248 | ° |
25 | EM | 57 | 9 | 89 | Y | 121 | y | 153 | Ö | 185 | ╣ | 217 | ┘ | 249 | ∙ |
26 | SUB | 58 | : | 90 | Z | 122 | z | 154 | Ü | 186 | ║ | 218 | ┌ | 250 | · |
27 | ESC | 59 | ; | 91 | [ | 123 | < | 155 | ¢ | 187 | ╗ | 219 | █ | 251 | √ |
28 | FS | 60 | 94 | ^ | 126 | 158 | ₧ | 190 | ╛ | 222 | ▐ | 254 | ■ | ||
31 | US | 63 | ? | 95 | _ | 127 | DEL | 159 | ƒ | 191 | ┐ | 223 | ▀ | 255 | NBSP |
Табл. 6. Таблица GLI 0, которая используется кодами PDF417
GLI 1
Следующий набор символов соответствует стандарту ISO 8859-1 (Википедия).
09. Определяем код как PDF417, выравниваем и находим минимальный элемент
Пришло время прочитать наш первый PDF417 символ.
Хотя этот шаг кажется совсем необязательным, стоит помнить, что PDF417 характеризуется уникальными старт- и стоп-паттернами, которые представлены x-последовательностями 81111113 и 711311121 (18 модулей) соответственно.
Кроме того, поскольку эти паттерны одинаковы в каждой строке их легко использовать для выравнивания PDF417 символа (Рис. 6). Хотя это и более актуальная задача при автоматическом сканировании, читать код необходимо перпендикулярно к старт- и стоп-паттернам.
Рис. 6. Шаг 0 при чтении PDF417
10. Считаем и сопоставляем со словарями
На необходимо определить количество информационных слов. Оно содержится в первом слове кода (строка 0, слово 0). К примеру, в нашем случае это значение равно 19 (Рис. 7). Кроме того, стоит проверить уровень коррекции ошибок, который можно узнать с помощью левых или правый индикаторов (не забываем, нужно выбрать правильную строку, Раздел 06). В результате, у нас должно быть 1 слово-длина, 18 слов-данных и 8 проверочных слов, то есть 27, что соответствует действительности.
Теперь разобьём код на строки. Это поможет ускорить чтение, поскольку необходимо использовать разные кластеры словаря.
Рис. 7. Узнаём длину данных, характеристики кода
11. Переводим PDF417 в текстовый вид и проверяем режимы кодирования
Итак, каждому слову необходимо сопоставить одно из значений от 000 до 928 (Рис. 8). В результате, получаем последовательность чисел, с которой далее будет удобно работать.
Рис. 8. Переводим символ в текстовое представление
12. Переводим в привычный нам вид
Поскольку мы знаем, что используется только текстовый режим, каждое слово можно расшифровать как 2 символа по формуле:
То есть чтобы определить необходимо выполнить целочисленное деление на 30, а для
— взять остаток от деления на 30.
Тогда всё сообщение можно записать как:
(27)(07) (19)(19) (15)(18) (28)(14) (19)(19) (28)(07) (27)(00) (01)(17) (29)(17) (02)(14) (12)(29) (19)(15) (14)(18) (19)(28) (19)(05) (00)(00) (09)(06) (02)(29)
Что в стандартном виде будет выглядеть как:
Итак, код скрывает ссылку на данную публикацию. С помощью дополнительных 8 символов можно проверить наличие ошибок в результатах (Раздел 05).
13. Особенности автоматизированного чтения
Автоматическое сканирование часто производится дважды — слева направо и наоборот. Это позволяет минимизировать количество ошибок.
Как и в случае ручного чтения, при автоматическом нужно выполнить поиск и выравнивание символа. Поскольку в жизни редко можно выровнять код и сканер идеально, необходимо чтобы линия сканирования не проходила через более чем 3 разные строки. В таком случае всегда можно будет определить, какие слова принадлежат какой строке (поскольку они находятся в разных кластерах).
Ещё один пункт, важный для неидеальных условий — чтение не последовательности, а
последовательности (Раздел 02). Поскольку PDF417 рассчитаны в том числе на печать на физических носителях, возможно размытие чернил (и т.д.), которое может привести к тому, что заполненные группы модулей станут шире, а пустые — уже. Проводя сканирование от края до такого же края, такие ошибки можно минимизировать.
Следующим шагом является определение уровня коррекции ошибок и построение матрицы слов. Кроме того, строится ещё одна матрица, которая состоит из весов (уровня доверия каждому значению). Слова с низким уровнем доверия в последствии проверяются на ошибки первыми.
14. Минимизация кода
Поскольку одну и ту же информацию можно записать различными способами в разных режимах, есть список рекомендаций, которые позволяют уменьшить количество информационных слов.
15. Размеры, пропорции и чистые зоны
Несмотря на то, что строгих ограничений на размер символа PDF417 нет, есть рекомендации касательно пропорций одного модуля. Так, желательно сохранять соотношение высоты к ширине примитивного элемента не менее (если вы соблюдаете минимальный рекомендуемый уровень коррекции ошибок, Табл. 4). Если рекомендации не соблюдаются, соотношение должно быть не менее
.
Кроме того, вокруг PDF417 необходимо оставлять «чистую зону», размером не менее 2 ширин модуля.
Посчитать размер символа можно с помощью следующих формул:
где
— высота;
— ширина;
— количество строк;
— количество столбцов;
— высота модуля (строки);
— ширина модуля;
— размер чистой зоны (минимум
).
16. Компактный (усечённый) PDF417
В случае использования PDF417 в «чистой» среде (символ не может быть случайно повреждён и чистые зоны вокруг символа достаточно велики), можно использовать усечённый режим PDF417 (Truncated PDF417, Рис. 9).
Он работает следующим образом:
В результате ширина символа сокращается на 34 модуля и формула из Раздела 15 может быть переписана:
Рис. 9. Усечённый PDF417 (содержит ту же информацию, что и рассмотренный ранее код)
Стоит помнить, что у такого метода кодирования есть и недостатки:
17. Полезные ссылки
Описание PDF417
Упоминалось
Кроме того
18. Послесловие
Итак, мы рассмотрели принципы кодирования и чтения информации в виде символов PDF417. Эти коды достаточно удобны для записи длинных сообщений в разных форматах (текстовый, числовой, байтовый) и их комбинациях, а также позволяют использовать коррекцию ошибок.
Возможно, вам будут также интересны другие статьи цикла Коды step by step:
Не забывайте, всегда лучше знать, как что-то работает. Вдруг, оно работает неправильно.