Извлекаем подробную таблицу, не позволяем сортировке нарушить соответствие между строками и исходным текстом
Одинаковое количество данных в двух строках не означает, что это повторяющиеся данные; отсортированная таблица получается более аккуратной, но это не означает, что ее можно построчно выровнять по исходному тексту. При извлечении деталей легче всего потерять соответствие между каждой строкой и источником. В этой статье объясняется, как его сохранить.
– Должны существовать объяснимые правила удаления межстраничных заголовков, инструкций таблицы продолжения и строк промежуточных итогов, а также сохранения исключенных строк и причин для проверки.
Тот факт, что суммы в двух строках одинаковы, не означает, что они являются повторяющимися данными. Тот факт, что таблица отсортирована, не означает, что она по-прежнему соответствует исходному тексту построчно. При извлечении деталей часто легко теряется не само поле, а соответствие между каждой строкой и источником.
Эта статья подходит для людей, которым необходимо извлекать детали из документов, таких как контракты, котировки, финансовые таблицы и т. д. Она также подходит для разработчиков, которые строят процессы последующей обработки. Прочитав, вы узнаете, как сохранить исходную информацию по каждой детали, как бороться с проблемами, вызванными одинаковыми суммами, межстраничными заголовками и сортировкой, а также какое выравнивание следует использовать при постпереводческой проверке.
Как сохранить соответствие между строками и источниками при извлечении реквизитов? Вывод в одно предложение
Сохраните стабильный идентификатор источника для каждой детали. Сортировка предназначена только для отображения и не заменяет исходный номер строки.
| твоя ситуация | Рекомендуемые практики | причина |
|---|---|---|
| Обе строки имеют одинаковую сумму | Сначала проверьте исходную страницу и номер исходной строки и не спешите удалять дубликаты. | Одна и та же сумма не представляет собой повторяющиеся данные. |
| Необходимо отсортировать по сумме. | Создайте представление отображения и сохраните исходный номер строки без изменений. | Отсортированные серийные номера не следует записывать обратно в источник. |
| В таблице появляются повторяющиеся заголовки или промежуточные итоги. | Исключить в соответствии с интерпретируемыми правилами и сохранить исключенные строки и причины | Облегчите рецензентам обнаружение случайных удалений. |
| Многоязычные детали должны быть согласованы | Выравнивание по идентификатору источника, а не только по переведенному названию продукта | Название продукта и его количество могут повторяться. |
Сначала сохраните идентификатор стабильной строки
Сохраните исходную страницу, номер таблицы и номер исходной строки для каждой детали или стабильный идентификатор, состоящий из этой информации. Название продукта и количество могут повторяться и не подходят как отдельные идентификаторы.
Когда нисходящему потоку необходимо отсортировать по сумме, вы можете создать представление отображения, но не записывайте по ошибке отсортированные серийные номера обратно в исходный источник.
Несколько способов использования его в качестве идентификатора строки
| Способ | Подходит ли оно в качестве удостоверения личности? | причина |
|---|---|---|
| Исходная страница + номер таблицы + номер исходной строки | Подходящий | Может стабильно находить строку в исходном тексте |
| Название продукта | Не подходит для использования отдельно | возможный дубликат |
| Количество | Не подходит для использования отдельно | возможный дубликат |
| Отображение серийного номера после сортировки | Не подходит в качестве источника | Изменится после сортировки |
Обратите внимание на уникальность 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. На что следует обратить внимание при удалении повторяющихся заголовков?
Должны быть интерпретируемые правила, а исключенные строки и причины должны сохраняться, чтобы можно было обнаружить случайное удаление.
📝 Резюме
При извлечении деталей сначала сохраняйте соответствие между каждой строкой и источником, а потом уже говорите о сортировке и дедупликации. Код в этой статье представляет собой лишь синтетический образец и не является гарантией всех реальных файлов или эффектов продукта. Перед обработкой важных документов, пожалуйста, сохраните оригиналы и просмотрите их по границам и пунктам приема в тексте.
Попробуйте сейчас: загрузите документ, чтобы начать перевод, сохранив исходный макет.


