세부 테이블을 추출합니다. 정렬로 인해 행과 원본 텍스트 간의 일치가 중단되지 않도록 합니다.
두 행의 세부정보 양이 동일하다고 해서 중복 데이터라는 의미는 아닙니다. 정렬된 표가 더 깔끔해졌지만 원본 텍스트와 한 줄씩 정렬될 수 있다는 의미는 아닙니다. 세부 정보를 추출할 때 가장 쉽게 손실되는 것은 각 행과 소스 간의 대응 관계인 경우가 많습니다. 이 글에서는 이를 유지하는 방법에 대해 설명합니다.
두 행의 금액이 동일하다고 해서 중복 데이터라는 의미는 아닙니다. 표가 정렬되어 있다고 해서 여전히 원래 텍스트와 한 줄씩 일치한다는 의미는 아닙니다. 세부 정보를 추출할 때 쉽게 손실되는 것은 필드 자체가 아니라 각 행과 소스 간의 대응 관계인 경우가 많습니다.
이 문서는 계약서, 견적, 재무 테이블 등과 같은 문서에서 세부 정보를 추출해야 하는 사람들에게 적합합니다. 또한 다운스트림 처리 프로세스를 구축하는 개발자에게도 적합합니다. 읽고 나면 각 세부사항에 대한 원본 정보를 유지하는 방법, 동일 금액, 페이지 간 헤더 및 정렬로 인해 발생하는 문제를 처리하는 방법, 번역 후 검증 시 어떤 정렬을 사용해야 하는지 알게 됩니다.
세부정보를 추출할 때 행과 소스 간의 대응성을 어떻게 유지하나요? 한 문장 결론
각 세부정보에 대해 안정적인 소스 식별자를 저장하세요. 정렬은 표시용으로만 수행되며 원래 줄 번호를 덮어쓰지 않습니다.
| 당신의 상황 | 권장 사례 | 이유 |
|---|---|---|
| 두 줄의 금액은 동일합니다. | 원본 페이지와 원본 행 번호를 먼저 확인하고, 중복된 내용을 성급하게 제거하지 마세요. | 동일한 금액은 중복된 데이터를 의미하지 않습니다. |
| 금액별로 정렬하여 표시해야 함 | 디스플레이 뷰를 생성하고 원래 줄 번호를 변경하지 않고 유지합니다. | 정렬된 일련 번호는 소스에 다시 기록되어서는 안 됩니다. |
| 표에 중복된 머리글 또는 소계가 나타납니다. | 해석 가능한 규칙에 따라 제외하고 제외된 행 및 이유를 유지합니다. | 검토자가 실수로 삭제한 항목을 더 쉽게 감지할 수 있도록 합니다. |
| 다국어 세부정보를 조정해야 합니다. | 번역된 제품 이름뿐만 아니라 소스 ID로 정렬 | 상품명과 금액이 모두 중복될 수 있습니다. |
안정적인 행 ID를 먼저 저장합니다.
각 세부 사항에 대한 소스 페이지, 테이블 번호, 소스 행 번호 또는 이 정보로 구성된 안정적인 식별자를 유지합니다. 상품명과 금액이 중복될 수 있으며, 별도의 아이덴티티로 적합하지 않습니다.
다운스트림이 금액별로 정렬해야 하는 경우 디스플레이 보기를 생성할 수 있지만 정렬된 일련 번호를 실수로 원래 소스에 다시 기록하지 마십시오.
행 ID로 사용할 수 있는 여러 가지 방법
| 방법 | 아이덴티티로 적합한가요? | 이유 |
|---|---|---|
| 소스 페이지 + 테이블 번호 + 소스 행 번호 | 적합한 | 원문에서 해당 줄을 신뢰성 있게 찾을 수 있습니다 |
| 제품명 | 단독으로는 적합하지 않습니다 | 가능한 재현 |
| 양 | 단독으로는 적합하지 않습니다 | 가능한 재현 |
| 정렬된 표시 번호 | 출처로서는 적합하지 않습니다 | 정렬 후에는 정렬 방식이 변경됩니다 |
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}
이것은 테이블 리더가 아니라 합성 데이터에 대한 신원 확인입니다. 코드는 의도적으로 같은 양을 중복하지 않으며, 표시 순서를 소스로 취급하지 않습니다.
True Source ID 생성 규칙은 파일 버전을 고려해야 합니다. 그렇지 않으면 두 버전 모두에서 같은 페이지나 줄이 동일한 증거로 오해될 수 있습니다.
행 수가 잘못되었다면, 먼저 누락된 링크를 찾아야 합니다
| 현상 | 확인해 봐야 합니다 | 즉시 복용해서는 안 됩니다 |
|---|---|---|
| 금액이 중복됩니다 | 다른 프로젝트든 다른 소스 뱅크든 상관없습니다 | 중복은 수량에 따라 제거됩니다 |
| 출처 ID 반복 | 반복적인 가져오기 여부나 잘못된 매핑이 있는지 | 무작위로 새 ID를 추가하세요 |
| 줄어드는 노선 | 셀 병합, 빈 행, 필터 규칙 | 앞선 줄을 사용해 빈틈을 채우세요 |
| 순서 변경 | 디스플레이 정렬용인가요? | 원래 줄 번호를 덮어라. |
교차 페이지 헤더는 일반적인 데이터 행이 아닙니다
중복 헤더, 연속된 테이블 설명, 그리고 부분 행 모두 보조 배열에 포함될 수 있습니다. 삭제하려면 해석 가능한 규칙이 필요하며, 앞부분이나 짧은 텍스트만 볼 수 없습니다.
제외된 줄과 그 이유를 유지하면 오류를 검토하고 삭제 여부를 발견하는 데 도움이 됩니다. 그렇지 않으면 최종 합계가 일치하지 않을 때만 문제를 조사합니다.
번역 후 검증에 출처 관계 적용
다국어 상세 목록은 출처 ID에 따라 정렬되어야 하며, 번역된 제품명만으로만 검색해서는 안 됩니다. OmniDoc (제품 입력)의 표 문서에서 번역 결과를 평가할 때, 행-열 관계, 수량, 단위는 별도로 확인할 가치가 있습니다.
이 글의 출처 식별은 외부 엔지니어링 계약이며, 플랫폼 내부 구현에 대한 설명은 제공하지 않습니다.
참고: JSON 스키마 배열
🎯 어떤 방법이 당신에게 맞나요?
사람들이 볼 수 있도록 금액별로 정렬해야 한다면
디스플레이 뷰를 생성하세요; 정렬은 디스플레이에만 영향을 미치며, 원본 소스 페이지와 소스 라인 번호는 변경되지 않습니다.
테이블에 페이지 횡단 헤더나 소계가 있다면
설명 가능한 규칙을 사용해 이 대사들을 제외하고, 제외된 대사와 그 이유를 나중에 검토할 수 있도록 보관하세요.
여러 버전의 파일을 다룰 경우
동일한 페이지와 줄 간의 혼동을 피하기 위해 소스 ID 생성 규칙은 파일 버전에 포함되어야 합니다.
다국어 세부 정렬을 원한다면
출처 ID별로 정렬하세요; 번역된 제품명에만 의존하지 마세요.
❓ 자주 묻는 질문 (FAQ)
1. 두 줄의 금액이 같으면 중복을 바로 제거할 수 있나요?
아니. 같은 양이 중복되는 것은 아닙니다; 먼저 소스 페이지와 줄 번호를 확인하여 서로 다른 항목에 속하는지 또는 다른 소스 행에 속하는지 확인해야 합니다.
2. 왜 제품명이 라인의 정체성에 적합하지 않은가?
제품명과 금액이 중복될 수 있으며, 이것만으로는 원본 라인을 신뢰성 있게 찾을 수 없습니다.
3. 정렬 후 새 일련번호를 원래 데이터에 다시 쓸 수 있나요?
추천하지 않습니다. 정렬된 일련번호는 표시에만 적합합니다; 원래 행 번호를 덮어쓰면 소스와의 대응 관계가 사라집니다.
4. 중복 헤더를 삭제할 때 주의해야 할 점은 무엇인가요?
설명 가능한 규칙이 있어야 하며, 제외된 줄과 이유는 오해 삭제를 식별할 수 있도록 유지되어야 합니다.
📝 요약
세부 정보를 추출할 때는 먼저 각 라인과 소스 간의 대응관계를 유지하고, 그 다음 정렬과 중복 제거에 대해 논의하세요. 이 글의 코드는 합성 샘플 시연용으로만 사용되며 모든 진짜 파일이나 제품 성능을 보장하지 않습니다. 중요한 문서를 다루기 전에 원본을 보관하고 문서의 경계와 수락 항목에 따라 검토해 주시기 바랍니다.


