Краткий ответ
Quick Answer
Извлечение сертификатов с несколькими позициями требует от парсера обнаружения границ таблицы, связывания заголовков столбцов со значениями по строкам, разделения нескольких плавок или позиций на отдельные записи и обработки разрывов страниц в таблице—задачи, которые выводят из строя простые конвейеры OCR, но решаемы с использованием моделей зрения-языка и осведомленных о таблицах схем извлечения.
Сертификат испытания прокатного стана с одной плавкой является самым простым случаем извлечения: один набор значений химии, один набор результатов механических испытаний, один номер плавки. Реальные потоки документов редко бывают такими чистыми. Центры услуг стали выпускают консолидированные сертификаты, охватывающие десятки плавок. Прокатные станы листовой стали табулируют несколько испытуемых мест на одной плавке. Производители труб включают химию тела и сварки в соседние столбцы.
Извлечение с несколькими позициями—это то место, где простые парсеры не работают, а надежные архитектуры извлечения доказывают свою ценность.
Типы документов с несколькими позициями
Понимание режимов отказа требует различения структур документов:
Тип 1: Консолидированный сертификат с несколькими плавками Один PDF охватывает несколько номеров плавок, каждый со своими данными химии и механических испытаний. Распространено на заводах стали и дистрибьюторов, которые переиздают поставщиков MTC в консолидированном формате. Типовая структура: таблица, где каждая строка—отдельная плавка.
Тип 2: Таблица многих механических испытаний образцов Одна плавка с несколькими результатами испытуемых образцов (например, испытания на удар Charpy при -20°C с пяти мест на пластине). Данные плавки единственны; только таблица механических испытаний имеет несколько строк.
Тип 3: Таблица многоэлементной химии с примечаниями Стандартная таблица химии плюс дополнительные элементы (бор, азот, остатки) во вспомогательной таблице на той же или следующей странице. Обе таблицы относятся к одной плавке.
Тип 4: Многоплавка, многостраничный сертификат Консолидированный сертификат, где таблица охватывает несколько страниц, строка заголовка столбца появляется только на первой странице.
Тип 5: Сертификат согласования позиции закупочного заказа Сертификат, охватывающий несколько позиций закупочного заказа, каждая с различными марками материалов, размерами и их соответствующие ссылки на плавки. Распространено в пакетах документации проектов EPC.
Каждая из этих структур требует различной стратегии извлечения.
Почему конвейеры OCR выходят из строя на многостроковых таблицах
Традиционный OCR обрабатывает страницу в поток символов в порядке чтения. Для таблицы химии с 12 элементами по 8 строкам плавок OCR возвращает что-то вроде:
C Mn Si P S Cr Mo Ni
0.18 1.42 0.28 0.012 0.008 0.02 0.01 0.08
0.21 1.38 0.31 0.015 0.010 0.02 0.01 0.09
...
Строка заголовка сохраняется, и значения отображаются в порядке. Но постобработка конвейера должна теперь:
- Определить, какая строка является заголовком
- Связать каждое значение в каждой строке данных с его заголовком столбца
- Обнаружить номер плавки, который определяет каждую строку
- Обработать случаи, когда номер плавки находится в отдельном предыдущем столбце или в объединенной ячейке
Эта логика привязки столбцов разбивается на:
- Таблицы с объединенными ячейками заголовка (охватывающие несколько столбцов)
- Таблицы с иерархическими заголовками (основная группа + подэлемент)
- Таблицы, где ширины столбцов значительно различаются
- Таблицы с пустыми ячейками (тест для этого элемента не выполнен)
- Таблицы со ссылками сносок, встроенными в ячейки
Как модели зрения-языка обрабатывают структуру таблицы
VLM обрабатывает страницу как изображение и визуально понимает структуру таблицы. Он видит, что заголовки столбцов охватывают определенные ширины и значения под ними принадлежат этим столбцам независимо от последовательности символов в порядке чтения. Модель может:
- Определить объединенные ячейки заголовка и применить заголовок ко всем подстолбцам
- Обнаружить пустые ячейки как явное "не тестировано" вместо неправильно прочитанных значений
- Распознать иерархические заголовки (например, "Химия%" с подзаголовками для каждого элемента)
- Связать номера плавок в самом левом столбце с каждой строкой значений
Для многостраничных таблиц модель требует явной обработки случая разрыва страницы: заголовки столбцов со страницы 1 должны быть распространены на строки данных на странице 2, где они не отображаются. Это требует контекста уровня документа, обрабатывающего страницы последовательно, а не независимо.
Сегментация: От таблицы к записям
После извлечения таблицы система должна разделить таблицу на отдельные записи—по одной на плавку или позицию. Этот этап сегментации логически отделен от этапа извлечения поля и требует его собственной логики:
Сегментация на основе строк: Каждая строка в таблице—это запись. Номер плавки в первом столбце—это основной ключ. Это общий случай для консолидированных сертификатов с несколькими плавками.
Сегментация на основе групп: Несколько строк принадлежат одной плавке (несколько результатов образцов). Система должна обнаружить границы групп—обычно объединенную ячейку или повторяющийся номер плавки—и агрегировать строки в одну запись плавки с вложенным массивом для многооборудованных данных.
Сегментация с перекрестными ссылками: Позиции ссылаются на номера плавок, которые отображаются в другом месте документа (например, таблица упаковочного листа ссылается на номера плавок, табулированные в отдельном разделе химии). Извлечение требует перекрестных ссылок в документе для построения полных записей.
Платформы, такие как TestCert, обрабатывают все три модели сегментации через управляемый схемой конвейер извлечения, где применяемая модель сегментации выбирается на основе классификации документа при поступлении.
Обработка разрывов страниц в многостраничных таблицах
Случай многостраничной таблицы распространен для больших пакетов документации проекта. Правильный подход:
- Обнаружить таблицу на странице 1, включая заголовки столбцов и их позиции
- Обнаружить, что таблица продолжается (обычно через метку "продолжение", соответствующую структуру столбца или отсутствие закрывающей границы)
- Сохранить сопоставление заголовка столбца со страницы 1
- Применить это сопоставление к строкам данных на последующих страницах
- Восстановить полную таблицу перед сегментацией на записи
Извлекатели, которые обрабатывают страницы независимо—распространенная конструкция по причинам затрат—тихо выходят из строя в этом случае. Они правильно извлекают страницу 1 и производят неполные или неправильно сформированные записи для страниц продолжения.
Валидация после извлечения с несколькими позициями
Каждая извлеченная запись позиции должна быть независимо проверена:
- Проходит ли проверка суммы химии? (Углерод + Марганец + Кремний + ... должны быть правдоподобны для указанной марки)
- Находятся ли механические значения в пределах указанного стандарта?
- Присутствует ли номер плавки и уникален ли в партии?
- Заполнены ли обязательные поля? (Некоторые многоплавка таблицы опускают повторяющиеся значения для краткости; отсутствующие значения должны быть отмечены, а не молча приняты как нуль)
Валидация на уровне записи, а не на уровне документа, предотвращает одну действительную плавку от скрытия проблем в других плавках на одном и том же сертификате.
Часто задаваемые вопросы
Какое максимальное количество позиций может надежно обработать извлекатель сертификатов?
Фиксированного максимума нет, но точность имеет тенденцию снижаться при очень больших таблицах (50+ строк) из-за накопленных ошибок вывода макета. Для очень больших консолидированных сертификатов разделение документа по страницам или разделам перед извлечением и объединение результатов впоследствии улучшает надежность. На практике большинство производственных MTC имеют 1–20 плавок на документ.
Как система должна обрабатывать позицию с отсутствующей химией для некоторых элементов?
Пустые ячейки должны быть записаны как null (не протестировано), а не как нуль. Значение углерода, равное нулю, химически бессмысленно; null означает, что элемент не требовался спецификацией или не был протестирован. Различие имеет значение, когда запись используется для валидации стандартов—null не должен вызывать ошибку "ниже минимума".
Может ли извлечение обработать сертификат, где каждая плавка имеет различную применяемую марку?
Да, если схема извлечения поддерживает поля стандартов/марок для каждой строки. Некоторые консолидированные сертификаты указывают одну марку для всех плавок (проще); другие указывают различные марки для каждой плавки (сложнее). Извлекатель должен обнаружить, какой шаблон применяется, и соответственно отобразить. Валидация нижележащего уровня должна затем проверить каждую плавку против ее собственной указанной марки, а не марки документа.
Что происходит, когда строка заголовка таблицы повторяется в середине таблицы (как некоторые инструменты вставляют для разбиения на страницы)?
Повторяющиеся строки заголовка—известный артефакт PDF. Надежный извлекатель обнаруживает и игнорирует повторяющиеся строки заголовка в теле данных вместо того, чтобы обрабатывать их как строки данных. Содержимое строки, точно соответствующее шаблону заголовка столбца, должно быть классифицировано как заголовок и исключено из извлечения данных.
Как я обрабатываю сертификат, где некоторые плавки имеют дополнительные данные испытаний, а другие нет?
Схема извлечения должна определить дополнительные поля испытаний как необязательные. Плавки с дополнительными данными заполняют эти поля; плавки без них оставляют null. Интерфейс проверяющего должен сделать наличие или отсутствие дополнительных данных видимым, чтобы проверяющие могли подтвердить, что отсутствующие дополнительные данные отражают фактическое содержание документа, а не пропуск извлечения.
Ready to automate your certificate workflow?
Try TestCert free