Извлекаем подробную таблицу, не позволяем сортировке нарушить соответствие между строками и исходным текстом

Одинаковое количество данных в двух строках не означает, что это повторяющиеся данные; отсортированная таблица получается более аккуратной, но это не означает, что ее можно построчно выровнять по исходному тексту. При извлечении деталей легче всего потерять соответствие между каждой строкой и источником. В этой статье объясняется, как его сохранить.

– Должны существовать объяснимые правила удаления межстраничных заголовков, инструкций таблицы продолжения и строк промежуточных итогов, а также сохранения исключенных строк и причин для проверки.

Тот факт, что суммы в двух строках одинаковы, не означает, что они являются повторяющимися данными. Тот факт, что таблица отсортирована, не означает, что она по-прежнему соответствует исходному тексту построчно. При извлечении деталей часто легко теряется не само поле, а соответствие между каждой строкой и источником.

Эта статья подходит для людей, которым необходимо извлекать детали из документов, таких как контракты, котировки, финансовые таблицы и т. д. Она также подходит для разработчиков, которые строят процессы последующей обработки. Прочитав, вы узнаете, как сохранить исходную информацию по каждой детали, как бороться с проблемами, вызванными одинаковыми суммами, межстраничными заголовками и сортировкой, а также какое выравнивание следует использовать при постпереводческой проверке.

Как сохранить соответствие между строками и источниками при извлечении реквизитов? Вывод в одно предложение

Сохраните стабильный идентификатор источника для каждой детали. Сортировка предназначена только для отображения и не заменяет исходный номер строки.

твоя ситуацияРекомендуемые практикипричина
Обе строки имеют одинаковую суммуСначала проверьте исходную страницу и номер исходной строки и не спешите удалять дубликаты.Одна и та же сумма не представляет собой повторяющиеся данные.
Необходимо отсортировать по сумме.Создайте представление отображения и сохраните исходный номер строки без изменений.Отсортированные серийные номера не следует записывать обратно в источник.
В таблице появляются повторяющиеся заголовки или промежуточные итоги.Исключить в соответствии с интерпретируемыми правилами и сохранить исключенные строки и причиныОблегчите рецензентам обнаружение случайных удалений.
Многоязычные детали должны быть согласованыВыравнивание по идентификатору источника, а не только по переведенному названию продуктаНазвание продукта и его количество могут повторяться.

Сначала сохраните идентификатор стабильной строки

Сохраните исходную страницу, номер таблицы и номер исходной строки для каждой детали или стабильный идентификатор, состоящий из этой информации. Название продукта и количество могут повторяться и не подходят как отдельные идентификаторы.

Когда нисходящему потоку необходимо отсортировать по сумме, вы можете создать представление отображения, но не записывайте по ошибке отсортированные серийные номера обратно в исходный источник.

Несколько способов использования его в качестве идентификатора строки

СпособПодходит ли оно в качестве удостоверения личности?причина
Исходная страница + номер таблицы + номер исходной строкиПодходящийМожет стабильно находить строку в исходном тексте
Название продуктаНе подходит для использования отдельновозможный дубликат
КоличествоНе подходит для использования отдельновозможный дубликат
Отображение серийного номера после сортировкиНе подходит в качестве источникаИзменится после сортировки

Обратите внимание на уникальность JSON-схемы

Сам массив JSON сохраняет порядок, но uniqueItems в схеме не является ярлыком для «поле уникально». Два объекта по-прежнему могут считаться отдельными элементами, если другие поля различны. Уникальность на уровне поля необходимо проверять индивидуально.

Набор реквизитов с одинаковой суммой и разными источниками

from collections import Counter

rows = [{"source_id": "p1-t1-r1", "item": "Bolt", "amount": "10.00"},
        {"source_id": "p1-t1-r2", "item": "Nut", "amount": "10.00"}]

def check_ids(items):
    counts = Counter(row["source_id"] for row in items)
    return [key for key, count in counts.items() if count > 1]

assert check_ids(rows) == []
assert len(rows) == 2
assert check_ids(rows + [dict(rows[0])]) == ["p1-t1-r1"]
display = sorted(rows, key=lambda row: row["item"], reverse=True)
assert [r["source_id"] for r in rows] == ["p1-t1-r1", "p1-t1-r2"]
assert {r["source_id"] for r in display} == {r["source_id"] for r in rows}

Это проверка подлинности синтетических данных, а не распознавателя таблиц. Код намеренно не выполняет дедупликацию одних и тех же сумм и не рассматривает порядок отображения как исходный порядок.

Правила создания идентификаторов источника достоверности должны учитывать версии файлов. В противном случае содержимое одной и той же страницы и строки в обеих версиях может быть ошибочно принято за одно и то же доказательство.

Если количество строк неверно, сначала найдите недостающее звено.

Феноменследует проверитьне следует принимать сразу
Повторяющаяся суммаБудь то другой проект или другая исходная строка.Удалить дубликаты по сумме
Повторяющийся идентификатор источникаЕсть ли повторяющаяся ошибка импорта или сопоставления?Случайно добавить новый идентификатор
Количество строк уменьшеноОбъединение ячеек, пустых строк и правил фильтрацииЗавершите предыдущую строку
Изменение последовательностиСортировать ли только по показамПерезаписать исходный номер строки

Межстраничный заголовок не является обычной строкой данных

Повторяющиеся заголовки таблиц, описания таблиц-продолжений и строки промежуточных итогов могут входить в массив сведений. Для их удаления требуются интерпретируемые правила, которые не учитывают только более высокое позиционирование или более короткий текст.

Сохранение исключенных строк и причин их удаления может помочь рецензентам обнаружить случайные удаления. В противном случае проблема будет решена только в том случае, если окончательная сумма не складывается.

Доведите исходную связь до проверки после перевода

Многоязычные расписания должны иметь возможность согласовываться по идентификатору источника, а не только по переведенному названию продукта. При оценке результатов перевода табличных документов OmniDoc (портал продуктов) следует индивидуально проверять связи строк и столбцов, количества и единицы измерения.

Идентификация источника в этой статье является внешним техническим соглашением и не является описанием внутренней реализации платформы.

Источники: Массив схемы JSON

🎯 Какой метод подходит вам?

Если вам нужно отсортировать по сумме, чтобы показать ее другим

Создайте представление отображения, сортировка влияет только на отображение, исходная исходная страница и номер исходной строки остаются неизменными.

Если в вашей таблице есть межстраничные заголовки или промежуточные итоги

Используйте интерпретируемые правила, чтобы исключить эти строки и сохранить исключенные строки и причины для последующего просмотра.

Если вы хотите обработать несколько версий файла

Правила генерации идентификатора источника должны быть включены в версию файла, чтобы предотвратить путаницу содержимого одной и той же строки на одной странице в разных версиях.

Если вы хотите выполнить подробное многоязычное выравнивание

Выравнивайте по идентификатору источника, не полагайтесь только на переведенное название продукта.

❓ Часто задаваемые вопросы (FAQ)

1. Суммы в двух строках одинаковы. Могу ли я удалить дубликаты напрямую?

не могу. Одинаковая сумма не означает дублирование данных. Сначала вам следует проверить исходную страницу и номер исходной строки, чтобы убедиться, принадлежат ли они разным проектам или разным исходным строкам.

2. Почему название продукта не подходит в качестве идентификатора строки?

Название товара и его количество могут повторяться, а устойчивое расположение строки в исходном тексте при использовании отдельно невозможно.

3. Можно ли после сортировки записать новый порядковый номер обратно в исходные данные?

Не рекомендуется. Отсортированные серийные номера пригодны только для отображения. Перезапись исходных номеров строк приведет к потере соответствия с источником.

4. На что следует обратить внимание при удалении повторяющихся заголовков?

Должны быть интерпретируемые правила, а исключенные строки и причины должны сохраняться, чтобы можно было обнаружить случайное удаление.

📝 Резюме

При извлечении деталей сначала сохраняйте соответствие между каждой строкой и источником, а потом уже говорите о сортировке и дедупликации. Код в этой статье представляет собой лишь синтетический образец и не является гарантией всех реальных файлов или эффектов продукта. Перед обработкой важных документов, пожалуйста, сохраните оригиналы и просмотрите их по границам и пунктам приема в тексте.

Попробуйте сейчас: загрузите документ, чтобы начать перевод, сохранив исходный макет.

Обновлено 2026-11-13