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

Однакова кількість деталей у двох рядках не означає, що вони дублюються; відсортована таблиця більш охайна, але це не означає, що її можна вирівняти з вихідним текстом рядок за рядком. Те, що найлегше втрачається під час вилучення деталей, це часто відповідність між кожним рядком і джерелом. Ця стаття пояснює, як його зберегти.

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

Ця стаття підходить для людей, яким потрібно витягти деталі з таких документів, як контракти, пропозиції, фінансові таблиці тощо. Вона також підходить для розробників, які створюють процеси подальшої обробки. Після прочитання ви дізнаєтесь, як зберегти вихідну інформацію для кожної деталі, як вирішувати проблеми, спричинені однаковою кількістю, міжсторінковими заголовками та сортуванням, і яке вирівнювання слід використовувати під час перевірки після перекладу.

Як зберегти відповідність між рядками та джерелами під час вилучення деталей? Висновок одним реченням

Збережіть стабільний ідентифікатор джерела для кожної деталі. Сортування призначене лише для відображення та не перезаписує оригінальний номер рядка.

ваша ситуаціяРекомендовані практикипричина
Обидва рядки мають однакову сумуСпочатку перевірте вихідну сторінку та номер вихідного рядка та не поспішайте видаляти дублікати.Однакова сума не означає повторення даних
Потрібно відобразити, відсортувавши за кількістюСтворіть подання дисплея та збережіть вихідний номер рядка без змінВідсортовані серійні номери не слід повертати до джерела
У таблиці з’являються повторювані заголовки або проміжні підсумкиВиключити відповідно до інтерпретованих правил і зберегти виключені рядки та причиниПолегшіть рецензентам виявлення випадкового видалення
Багатомовні деталі потрібно узгодитиВирівнюйте за ідентифікатором джерела, а не лише за перекладеною назвою продуктуМожуть повторюватися як назва товару, так і сума

Спочатку збережіть ідентифікатор стабільного рядка

Зберігайте вихідну сторінку, номер таблиці та вихідний номер рядка для кожної деталі або стабільний ідентифікатор, що складається з цієї інформації. Назва продукту та кількість можуть повторюватись і не підходять як окремі ідентифікатори.

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

Декілька способів його можна використовувати як ідентифікатор рядка

ШляхЧи підходить він як ідентифікатор?причина
Вихідна сторінка + номер таблиці + номер вихідного рядкаПідходитьМоже стабільно розташувати рядок в оригінальному тексті
Назва продуктуНе підходить для використання окремоможливий дублікат
СумаНе підходить для використання окремоможливий дублікат
Відображення серійного номера після сортуванняНе підходить як джерелоЗміниться після сортування

Зверніть увагу на унікальність схеми 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