Сканирование нескольких штрихкодов в растре
HPDFCreateBuiltInBarcodeDecoder сканирует несколько разнесённых символов в одном растре, включая смешанные линейные коды, QR Code, Data Matrix ECC 200 и PDF417, поддерживаемые нативными декодерами
Существующая перегрузка DecodeLoadedPageBarcodes автоматически использует этот сканер и сохраняет пиксельные границы каждого результата до того, как пайплайн страницы отобразит их в координаты PDF
Результаты сортируются по верхней позиции, затем по левой, а дубликаты сливаются только при совпадении symbology, текста, необработанных байтов и перекрывающейся позиции; одинаковые payload в разных местах остаются отдельными результатами
Нативный helper и геометрия
HPDFBarcodeRecognitionScan экспортирует HPDFScanBarcodeBitmap для вызывающих, которым нужны более богатый массив THPDFBarcodeScanSymbols и статистика THPDFBarcodeScanInfo
Передайте THPDFBarcodeDecodeRequest, HPDFCreateBuiltInSingleBarcodeDecoder и THPDFBarcodeScanOptions.Default; фабрика одиночного символа также сохраняет прямой доступ к исходному декодеру для выбора области под конкретное приложение
HPDFCreateScanningBarcodeDecoder оборачивает переданный одно-символьный IHPDFBarcodeDecoder в то же сканирование областей, подавление дубликатов и агрегированные бюджеты — для приложений, которым нужен только обычный интерфейс декодера
Каждый THPDFBarcodeScanSymbol содержит обычную запись Barcode, четыре растровых Corners, HasPerspectiveGeometry и отдельный для символа Diagnostic
Геометрия Data Matrix строит выпуклую оболочку из экстремумов строк переднего плана, восстанавливает четыре линии граней, пересекает соседние линии и решает восьмипараметрическую гомографию, чтобы сэмплировать центры модулей голосованием большинства по пяти точкам
Декодер перебирает поддерживаемые квадратные и стандартные прямоугольные размеры ECC 200, повороты и зеркальные отражения, затем проверяет finder-границы и блоки Рида — Соломона, прежде чем вернуть текст или необработанные байты; поворот и трапецеидальная проекция могут сочетаться с исправимыми повреждениями модулей данных
Для проверенной геометрии Data Matrix OrientationDegrees измеряет каноническое верхнее ребро по часовой стрелке от положительной оси x растра, а Corners обходят найденную оболочку по часовой стрелке с неопределённым начальным углом
HPDFDataMatrixGeometry экспортирует HPDFLocateDataMatrixQuadrilateral и HPDFSampleBarcodeQuadrilateral, а HPDFDataMatrixDecoder — HPDFDecodeDataMatrixQuadrilateral для приложений, которые уже знают четыре проецированных угла
Значения confidence описывают путь верификации декодера, а не откалиброванную статистическую вероятность; сэмплированные проективно результаты ECC 200 сейчас сообщают 0.90 после успешной проверки границ и коррекции ошибок
Для других нативных symbology углы helper'а описывают возвращаемые границы, выровненные по осям, а HasPerspectiveGeometry равен false; их существующие значения confidence и ориентации сохраняются
Бюджеты и атомарная публикация
Сканер использует бинаризацию Отсу и тайлы занятости из четырёх пикселей, затем связывает области переднего плана матрицы от наибольшего из трёх ограниченных расстояний соседства к меньшим; так сначала пробуется целый повёрнутый символ, а не разорванные фрагменты, при этом сохраняются более тесные повторные попытки для разнесённых символов и fallback на весь растр для необычного масштаба или связного рисунка
Области, чьи тайлы переднего плана уже покрыты проверенными результатами, пропускаются до декодирования; пиксели исходного bitmap и его формат у вызывающего сохраняются
Лимиты по умолчанию: 256 декодирований кандидатов, 67 108 864 суммарных пикселей кандидатов, 268 435 456 оценочных рабочих байтов и дедлайн запроса в две секунды; прежние потолки ввода — размер 4096 на 4096 и 4 194 304 пикселя — продолжают действовать
MaxResults, MaxTextCodeUnits и MaxRawBytes в запросе применяются к агрегированному публикуемому набору результатов, включая повторяющиеся payload в разных местах
THPDFBarcodeScanInfo сообщает число попыток декодирования кандидатов, суммарно декодированные пиксели, отклонённых кандидатов и перекрывающиеся дубликаты результатов
Отмена распространяется как EHPDFOperationCancelled; исчерпанные бюджеты или ошибки декодера возвращают false с диагностикой, и при любом сбое массив символов остаётся пустым, даже если предыдущие кандидаты успешно декодировались
Пустой или равномерно низкоконтрастный ввод успешно завершается пустым массивом, а неподдерживаемый высококонтрастный рисунок не выдаёт угаданных символов
Область распознавания
Сканирование матриц сначала пробует более крупные связные группы, а затем более плотные фрагменты, сохраняя повторные попытки для разнесённых символов и исходный дедлайн; нативная геометрия QR проверяет точные finder-паттерны, прежде чем выделять и сэмплировать полную сетку кандидата
Нескольким символам нужен достаточный видимый фон-разделитель для группировки областей; соприкасающиеся или перекрывающиеся символы, плотный окружающий рисунок, сильно повреждённые границы локаторов, крошечные проецируемые модули и крайняя перспектива могут помешать локализации
DMRE, изогнутые поверхности, восстановление при фотографических бликах и дополнительные symbology сверх существующего набора нативных декодеров остаются вне этого профиля
Независимые фикстуры покрывают коллаж из шести символов с повторяющимися QR payload, повёрнутыми и трапецеидальными изображениями Data Matrix, прямоугольным ECC 200 и комбинированной перспективой с исправимыми повреждениями модулей данных
Поддерживаемые режимы payload описаны в Встроенное распознавание OCR и штрихкодов, а отображение координат из страницы в растр — в Декодирование штрихкодов на загруженных страницах