詳細な表を抽出します。ソートによって行と元のテキストの対応が崩れないようにしてください。
2 つの行に同じ量の詳細が含まれていても、それらが重複データであることを意味するわけではありません。ソートされた表はより整然としていますが、元のテキストと 1 行ずつ並べることができるという意味ではありません。詳細を抽出するときに最も失われやすいのは、多くの場合、各行とソース間の対応関係です。この記事ではその保存方法について説明します。
この記事のポイント
・ 2行の明細金額が同じであっても、重複データではありません。重複を判断するには、それらが異なる項目であるか、異なるソース行であるかを確認する必要があります。
- 製品名と金額は繰り返される場合があるため、個別の ID 行としては適していません。ソース ページ、テーブル番号、ソース行番号は保持する必要があります。
- 並べ替えは表示ビューにのみ使用でき、並べ替えられたシリアル番号を元のソース行番号に書き戻す必要はありません。
- JSON スキーマの uniqueItems は特定のフィールドの一意性と等しくないため、フィールドレベルの一意性を個別にチェックする必要があります。
- ページをまたがるヘッダー、継続テーブルの指示、および小計行を削除し、除外された行とレビューの理由を保持するための説明可能なルールが必要です。
2 つの行の金額が同じだからといって、それらが重複データであるとは限りません。テーブルがソートされているからといって、それが元のテキストに 1 行ずつ対応していることを意味するわけではありません。詳細を抽出する場合、失われやすいのはフィールド自体ではなく、各行とソースとの対応関係であることがよくあります。
この記事は、契約書、見積書、財務表などの文書から詳細を抽出する必要がある人に適しています。また、下流の処理プロセスを構築している開発者にも適しています。読むと、各詳細のソース情報を保持する方法、同じ量、ページをまたがるヘッダーと並べ替えによって引き起こされる問題への対処方法、翻訳後の検証中にどのような配置を使用する必要があるかがわかります。
詳細を抽出するときに行とソース間の対応を維持するにはどうすればよいですか?一文の結論
詳細ごとに安定したソース識別子を保存します。並べ替えは表示のみを目的としており、元の行番号は上書きされません。
| あなたの状況 | 推奨される実践方法 | 理由 |
|---|---|---|
| 両方の行の金額は同じです | まずソース ページとソース行番号を確認し、急いで重複を削除しないでください。 | 同じ量は重複データを表しません |
| 金額順に並べて表示する必要がある | 表示ビューを作成し、元の行番号を変更しないでください。 | ソートされたシリアル番号をソースに書き戻さないでください。 |
| 重複したヘッダーまたは小計がテーブルに表示される | 解釈可能なルールに従って除外し、除外された行とその理由を保持します。 | レビュー担当者が誤って削除したことを検出しやすくする |
| 多言語の詳細を調整する必要がある | 翻訳された製品名だけではなく、ソース ID によって整列します | 商品名と数量の両方を繰り返すことができます |
まず安定した行 ID を保存します
各詳細のソース ページ、テーブル番号、ソース行番号、またはこの情報で構成される安定した識別子を保持します。製品名と金額は重複する可能性があり、個別のアイデンティティとしては適していません。
下流側で金額順に並べ替える必要がある場合は、表示ビューを作成できますが、並べ替えられたシリアル番号を誤って元のソースに書き戻さないようにしてください。
行 ID として使用できるいくつかの方法
| 方法 | アイデンティティとして適しているのでしょうか? | 理由 |
|---|---|---|
| ソースページ + テーブル番号 + ソース行番号 | 適切な | 原文中の行を安定して見つけることができる |
| 製品名 | 単独での使用には適していません | 重複の可能性 |
| 額 | 単独での使用には適していません | 重複の可能性 |
| ソート後のシリアル番号を表示 | ソースとしては適さない | 並べ替え後に変更されます |
JSON スキーマの一意性に注意してください
JSON 配列自体は順序を保持しますが、スキーマ内の uniqueItems は「フィールドが一意である」ことのショートカットではありません。他のフィールドが異なる限り、2 つのオブジェクトは依然として別個のアイテムと見なされます。フィールドレベルの一意性は個別にチェックする必要があります。
同じ量と異なるソースを持つ一連の詳細
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}
これは合成データの ID チェックであり、テーブル認識ではありません。このコードは、意図的に同じ量の重複排除を行っておらず、表示順序をソース順序とみなしていません。
信頼できる情報源 ID を生成するルールでは、ファイルのバージョンを考慮する必要があります。そうしないと、両方のバージョンの同じページおよび行の内容が同じ証拠であると誤解される可能性があります。
行数が間違っている場合は、まず失われたリンクを見つけます。
| 現象 | チェックする必要があります | すぐに服用すべきではありません |
|---|---|---|
| 重複した量 | 別のプロジェクトであっても、別のソース行であっても | 量に応じて重複を削除します |
| ソースIDが重複しています | 重複インポートまたはマッピングエラーはありますか? | 新しいIDをランダムに追加 |
| 削減された行数 | セル、空白行、フィルター ルールを結合する | 前の行を完成させます |
| シーケンス変更 | インプレッションのみで並べ替えるかどうか | 元の行番号を上書きする |
クロスページヘッダーは通常のデータ行ではありません
繰り返しのテーブル ヘッダー、継続テーブルの説明、および小計行はすべて詳細配列に入力できます。それらを削除するには、上位の位置や短いテキストだけを考慮するのではなく、解釈可能なルールが必要です。
除外された行とその理由を保持しておくと、レビュー担当者が誤って削除したことを検出しやすくなります。そうしないと、最終的な合計が合わない場合にのみ問題が追及されることになります。
ソース関係を翻訳後の検証に持ち込む
多言語スケジュールは、翻訳された製品名だけでなく、ソース ID によっても調整できる必要があります。OmniDoc (製品ポータル)の表形式文書の翻訳結果を評価する場合、行と列の関係、数量、単位などを個別に確認する必要があります。
この記事の出典の特定は外部のエンジニアリング規約であり、プラットフォームの内部実装を説明するものではありません。
参考:JSON スキーマ配列
🎯 どの方法があなたに適していますか?
他の人に見せるために金額順に並べ替える必要がある場合
表示ビューを作成します。並べ替えは表示にのみ影響し、元のソース ページとソース行番号は変更されません。
表にページをまたがるヘッダーまたは小計がある場合
解釈可能なルールを使用してこれらの行を除外し、除外された行とその理由を後で確認できるように保持します。
複数のバージョンのファイルを処理する場合
異なるバージョン間で同じページの同じ行の内容が混同されないように、ソース ID 生成ルールをファイル バージョンに組み込む必要があります。
多言語で詳細な位置合わせをしたい場合
翻訳された製品名だけに依存せず、ソース ID によって調整します。
❓ よくある質問 (FAQ)
1. 2 つの行の金額は同じです。重複を直接削除できますか?
できません。同じ量であってもデータが重複するわけではありません。まずソース ページとソース行番号をチェックして、それらが別のプロジェクトまたは別のソース行に属しているかどうかを確認する必要があります。
2. 製品名が行 ID として適切ではないのはなぜですか?
商品名と金額が重複する場合があり、単独で使用すると原文の行を安定して見つけることができません。
3. ソート後に新しいシーケンス番号を元のデータに書き戻すことはできますか?
お勧めしません。ソートされたシリアル番号は表示のみに適しています。元の行番号を上書きすると、ソースとの対応が失われます。
4. 重複したヘッダーを削除するときに注意すべき点は何ですか?
解釈可能なルールが必要であり、偶発的な削除を検出できるように、除外された行とその理由が保存される必要があります。
📝 概要
詳細を抽出するときは、まず各行とソース間の対応関係を保持し、次に並べ替えと重複排除について説明します。この記事のコードは単なる合成サンプルのデモであり、すべての実際のファイルや製品の効果を保証するものではありません。重要な書類を処理する前に、原本を保管し、本文の境界と許容事項に従って確認してください。


