Extraia a tabela detalhada, não deixe a ordenação atrapalhar a correspondência entre as linhas e o texto original

A mesma quantidade de detalhes nas duas linhas não significa que sejam dados duplicados; a tabela ordenada é mais organizada, mas isso não significa que possa ser alinhada com o texto original linha por linha. O que se perde mais facilmente ao extrair detalhes é muitas vezes a correspondência entre cada linha e a fonte. Este artigo explicará como mantê-lo.

Só porque os valores nas duas linhas são iguais não significa que sejam dados duplicados. Só porque a tabela está ordenada não significa que ela ainda corresponda ao texto original linha por linha. Ao extrair detalhes, o que se perde facilmente muitas vezes não é o campo em si, mas a correspondência entre cada linha e a fonte.

Este artigo é adequado para pessoas que precisam extrair detalhes de documentos como contratos, cotações, tabelas financeiras, etc. Também é adequado para desenvolvedores que estão construindo processos de processamento downstream. Após a leitura, você saberá como reter as informações de origem para cada detalhe, como lidar com os problemas causados pela mesma quantidade, cabeçalhos entre páginas e classificação, e qual alinhamento deve ser usado durante a verificação pós-tradução.

Como manter a correspondência entre linhas e fontes ao extrair detalhes? Conclusão de uma frase

Salve um identificador de origem estável para cada detalhe. A classificação é apenas para exibição e não substitui o número da linha original.

sua situaçãoPráticas recomendadasrazão
Ambas as linhas têm o mesmo valorVerifique primeiro a página de origem e o número da linha de origem e não se apresse em remover duplicatas.A mesma quantidade não representa dados duplicados
Precisa ser exibido classificado por valorCrie uma visualização de exibição e mantenha o número da linha original inalteradoOs números de série classificados não devem ser gravados de volta na fonte
Cabeçalhos ou subtotais duplicados aparecem na tabelaExcluir de acordo com regras interpretáveis e reter linhas e motivos excluídosTorne mais fácil para os revisores detectar exclusões acidentais
Detalhes multilíngues precisam ser alinhadosAlinhe por ID de origem, não apenas pelo nome do produto traduzidoTanto o nome do produto quanto a quantidade podem ser repetidos

Salve a identidade da linha estável primeiro

Mantenha a página de origem, o número da tabela e o número da linha de origem para cada detalhe ou um identificador estável composto por essas informações. O nome e a quantidade do produto podem ser repetidos e não são adequados como identidades separadas.

Quando o downstream precisar classificar por quantidade, você pode criar uma visualização de exibição, mas não escreva por engano os números de série classificados de volta à fonte original.

Várias maneiras de usá-lo como identidade de linha

CaminhoÉ adequado como identidade?O motivo
Página fonte + número da tabela + número da linha de origemAjusteEle consegue localizar a linha no texto original de forma confiável
Nome do produtoNão é adequado para uso sozinhoPossíveis repetições
ValorNão é adequado para uso sozinhoPossíveis repetições
O número de exibição ordenadoNão é adequado como fonteA separação muda após a separação

Note a singularidade do Esquema JSON

Arrays JSON mantêm a ordem, mas uniqueItems no esquema não é um atalho para "um campo é único." Se os outros campos de dois objetos diferirem, eles ainda podem ser considerados itens distintos. A unicidade em nível de campo precisa ser verificada separadamente.

Um conjunto de detalhes com a mesma quantidade, mas fontes diferentes

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}

Isso é uma verificação de identidade para dados sintéticos, não um leitor de tabelas. O código deliberadamente não duplica a mesma quantidade, nem trata a ordem de exibição como fonte.

As regras para gerar IDs de Fonte Verdadeira precisam considerar a versão do arquivo. Caso contrário, a mesma página ou linha em ambas as versões pode ser confundida com a mesma evidência.

Se o número de linhas estiver incorreto, primeiro identifique o elo faltante

FenômenoDeve ser verificadoNão deve ser tomado imediatamente
Os valores são duplicadosSeja um projeto diferente ou um banco de fontes diferenteDuplicados são removidos por quantidade
ID de fonte repetidoSe há importações repetidas ou mapeamentos incorretosAdicionar um novo ID aleatoriamente
Menos linhasCélulas de mescagem, linhas em branco e regras de filtroUse a linha anterior para preencher a lacuna
Mudanças de sequênciaÉ só para ordenar displays?Cobrir o número original da linha

Cabeçalhos de página cruzada não são linhas de dados comuns

Cabeçalhos duplicados, descrições contínuas de tabelas e linhas de subtotais podem todos ir para o array subsidiário. Exclui-los requer regras interpretáveis; você não pode simplesmente olhar para a frente ou para o texto curto.

Manter linhas excluídas e seus motivos pode ajudar a revisar erros e detectar exclusões. Caso contrário, somente quando o total final não coincidir o problema será investigado.

Trazendo Relações de Origem para a Verificação Pós-Tradução

Listas detalhadas multilíngues devem ser alinhadas por ID de fonte e não podem ser pesquisadas apenas pelo nome do produto traduzido. Ao avaliar os resultados de tradução dos documentos de tabela do OmniDoc (Entrada de Produto), as relações linha-coluna, quantidades e unidades valem a pena serem verificadas separadamente.

A identificação da fonte neste artigo é um acordo externo de engenharia e não fornece uma explicação sobre a implementação interna da plataforma.

Referências: Matriz de esquema JSON

🎯 Qual método combina com você?

Se você precisar organizar por quantidade para as pessoas verem

Crie uma visualização de exibição; a ordenação afeta apenas a visualização, e a página de origem original e o número da linha de origem permanecem inalterados.

Se sua tabela tem cabeçalhos ou subtotais de páginas cruzadas

Use regras explicáveis para excluir essas linhas e mantenha as linhas excluídas e seus motivos para revisão posterior.

Se você está lidando com várias versões de um arquivo

As regras para gerar IDs de fonte devem ser incorporadas à versão do arquivo para evitar confusão entre versões da mesma página e linha.

Se você quiser fazer alinhamento multilíngue de detalhes

Alinhe pelo ID da fonte; não confie apenas no nome do produto traduzido.

❓ Perguntas Frequentes (FAQ)

1. Se os valores em ambas as linhas forem iguais, duplicatas podem ser removidas diretamente?

Não. A mesma quantidade não significa dados duplicados; suas páginas de origem e números de linha devem ser verificados primeiro para confirmar se pertencem a itens diferentes ou a diferentes linhas de fonte.

2. Por que o nome do produto não é adequado para a identidade da linha?

Nomes e quantidades dos produtos podem ser duplicados, e usá-los sozinhos não pode localizar de forma confiável a linha original.

3. Após a separação, o novo número de série pode ser escrito de volta nos dados originais?

Não recomendado. Números de série ordenados são adequados apenas para exibição; sobrescrever os números de linha originais perderá a correspondência com a fonte.

4. O que você deve prestar atenção ao deletar cabeçalhos duplicados?

Devem existir regras explicáveis, e as linhas e motivos excluídos devem ser mantidos para identificar exclusões erradas.

📝 Resumo

Ao extrair detalhes, primeiro mantenha a correspondência entre cada linha e a fonte, depois discuta a ordenação e a deduplicação. O código neste artigo é apenas para demonstração de amostras sintéticas e não garante o desempenho genuíno de todos os arquivos ou produtos. Antes de manusear documentos importantes, por favor, mantenha os originais e revise-os de acordo com os limites e itens de aceitação no documento.

Experimente agora: Envie seu documento para começar a traduzir, preservando a formatação original

Atualizado em 2026-11-13