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ção | Práticas recomendadas | razão |
|---|---|---|
| Ambas as linhas têm o mesmo valor | Verifique 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 valor | Crie uma visualização de exibição e mantenha o número da linha original inalterado | Os números de série classificados não devem ser gravados de volta na fonte |
| Cabeçalhos ou subtotais duplicados aparecem na tabela | Excluir de acordo com regras interpretáveis e reter linhas e motivos excluídos | Torne mais fácil para os revisores detectar exclusões acidentais |
| Detalhes multilíngues precisam ser alinhados | Alinhe por ID de origem, não apenas pelo nome do produto traduzido | Tanto 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 origem | Ajuste | Ele consegue localizar a linha no texto original de forma confiável |
| Nome do produto | Não é adequado para uso sozinho | Possíveis repetições |
| Valor | Não é adequado para uso sozinho | Possíveis repetições |
| O número de exibição ordenado | Não é adequado como fonte | A 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ômeno | Deve ser verificado | Não deve ser tomado imediatamente |
|---|---|---|
| Os valores são duplicados | Seja um projeto diferente ou um banco de fontes diferente | Duplicados são removidos por quantidade |
| ID de fonte repetido | Se há importações repetidas ou mapeamentos incorretos | Adicionar um novo ID aleatoriamente |
| Menos linhas | Células de mescagem, linhas em branco e regras de filtro | Use 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


