Um PDF não contém linhas de texto. Ele contém glifos nas coordenadas e as linhas que você pode ver são uma coisa que seu olho monta. Qualquer extrator também deve montá-los, a partir de três números por execução e de alguns limites, e quase todas as estranhezas no texto extraído remontam a um desses limites, fazendo uma ligação razoável que estava errada. O que consertei ao escrever isso virou um sobrenome quebrado em uma linha, "Osei" então "Mensah", em "Osei-mensah": Hyphen manteve, como pretendido, com um espaço depois que nunca pertenceu lá.
tl;dr: A extração é uma remontagem de linha e as configurações que importam são invisíveis. As corridas dentro de meia altura de fonte uma da outra são uma linha; uma lacuna vertical mais de 1,45 vezes a lacuna usual da página inicia um parágrafo; um intervalo horizontal abaixo de um quarto da altura da fonte não é um espaço de palavras. escolher refluxo Para colar em um editor e preservar Para tabelas e códigos. Um PDF com média de menos de 12 caracteres Uma página é uma varredura e precisa de OCR, que a ferramenta diz em vez de entregar um arquivo vazio. pdf para texto Executa no navegador.
Por que um PDF precisa de "extrair"?
Porque o texto nele foi escrito como instruções de desenho, e lê-los de volta não é o inverso de escrevê-los.
Um fluxo de conteúdo diz: "Defina essa fonte neste tamanho, mova aqui, mostre esses glifos". a especificação Descreve um modelo de pintura e os operadores de texto sentam-se ao lado dos que desenhem linhas e preenchimento de formas. Não há nenhuma linha, parágrafo ou coluna que significa objeto. o que pdf.js Hands Back é uma lista plana de corridas posicionadas, cada uma com uma corda, um X, um Y, uma largura e uma altura de fonte, na ordem em que a página foi pintada. Em uma página de teste, essa ordem não está lendo a ordem, e uma única execução pode ser um personagem.
Todo o resto é reconstrução. Três limites fazem quase tudo isso e vale a pena saber porque explicam as falhas.
| Limiar | apreço | O que decide |
|---|---|---|
| tolerância de linha | 0,5 x altura da fonte | Se duas corridas ficam na mesma linha |
| proporção de parágrafos | 1,45 x A lacuna mediana da página | Se uma lacuna vertical inicia um novo parágrafo |
| proporção do espaço | 0,25 x altura da fonte | Se uma lacuna horizontal é um espaço de palavras |
Cada um é uma fração do tamanho do texto, em vez de um número fixo de pontos, portanto, uma nota de rodapé e um título na mesma página têm tolerâncias diferentes, e um documento definido em 9 pontos se comporta como um conjunto em 14.
Por que o limite do espaço de palavras é necessário?
Porque sem ele cada palavra se desfaz.
Um analisador de PDF frequentemente divide uma única palavra em várias execuções sem nenhuma lacuna entre elas, para o Kerning ou para uma mudança de fonte no meio da palavra. A união é executada em um espaço incondicionalmente gira filename em f i l e n a m e. Juntar-se com nada, separa palavras separadas.
Portanto, a regra é uma lacuna mais larga que um quarto da altura da fonte, que é considerada um espaço, que é aproximadamente a largura de um espaço de palavras real na maioria das fontes. Abaixo disso, as corridas são partes de uma palavra.
Este é o limite que você nunca notará funcionando e imediatamente notará a falha, geralmente em um título definido com amplo espaçamento entre letras, onde cada letra está distante o suficiente para parecer uma palavra.
Qual é a diferença entre refluxo e preservação?
Reflow dá-lhe prosa. A preservação fornece a página.
Aqui está um parágrafo estabelecido em três linhas, seguido por outro, percorrendo os dois modos:
--- preserve ---
The committee reviewed the figures and agreed that the
revised protocol should be circulated before the end of
the month.
A second paragraph begins here after a larger gap.
--- reflow ---
The committee reviewed the figures and agreed that the revised protocol should be circulated before the end of the month.
A second paragraph begins here after a larger gap.
Reflow juntou as três linhas em uma frase e coloque uma linha em branco entre os parágrafos. A preservação manteve cada quebra de linha com a qual a página foi apresentada, incluindo aquela no meio de uma frase.
| Usar refluxo | Use a preservação |
|---|---|
| Colar em um documento ou editor | Uma tabela, onde as colunas são o conteúdo |
| Citando uma passagem | Uma lista de códigos, onde as quebras de linha são sintaxe |
| Alimentar texto a um script ou modelo | um bloco de endereço ou um formulário |
| qualquer coisa que você vai reformatar de qualquer maneira | Qualquer coisa em que o layout carrega significado |
Reflow é o padrão e o certo na maioria das vezes. O erro que as pessoas cometem é usá-lo em uma mesa, onde unir as linhas em prosa destrói a única estrutura que a mesa tinha.
Como ele decide onde termina um parágrafo?
Comparando cada lacuna vertical com a lacuna típica da página.
Cada lacuna entre linhas consecutivas é medida, a mediana é tomada e qualquer lacuna mais de 1,45 vezes que a mediana inicia um novo parágrafo. Portanto, uma página com um único espaço não volta como um parágrafo por linha, e uma de dois espaços não volta como um único bloco.
Usar a mediana em vez de um número fixo é o que faz com que isso funcione em documentos com líderes diferentes. É também onde falha: uma página com poucas linhas não possui uma mediana confiável. Uma página de rosto, uma pequena nota ou uma folha de rosto geralmente voltam como um parágrafo de corrida, que é a mesma fraqueza A conversão da palavra tem, pelo mesmo motivo.
A correção é manual e rápido. As quebras de parágrafo são óbvias para um leitor de uma forma que não são até um limite.
O que aconteceu com as palavras quebradas através das linhas?
Eles são reunidos novamente, e a regra para a qual os hifens descartados é um palpite que está certo com mais frequência.
Quando uma linha termina em um hífen, a questão é se o tipógrafo a coloca lá para quebrar uma palavra ou se pertence à palavra. A regra usada aqui é o caso: se a próxima linha começar em minúsculas, o hífen é o tipo de letra, se começar com um maiúsculo ou um dígito, o hífen faz parte do texto e permanece.
| Quebrado através das linhas | Resultado | certo? |
|---|---|---|
self- + contained |
selfcontained |
sim |
re- + encode |
reencode |
sim |
client- + Side |
client-Side |
sim |
Osei- + Mensah |
Osei-Mensah |
sim |
COVID- + 19 |
COVID-19 |
sim |
2026- + 03 |
2026-03 |
sim |
well- + known |
wellknown |
não |
A última linha não pode ser corrigida por nenhuma regra. "Bem conhecido" quebrado em seu próprio hífen e "bem conhecido" quebrado pela justificação, produza o par de linhas idênticos, e avisá-los precisa de um dicionário em vez de um limite. O mesmo se aplica a "re-" e "code" acima, que está certo apenas porque "reencode" não é uma palavra que alguém escreve.
As linhas no meio são aquelas que mudaram enquanto este guia estava sendo escrito. O caso sem quebrar usado para adicionar um espaço junto com o hífen, produzindo Osei- Mensah e 2026- 03. O hífen pertence à palavra de qualquer maneira, então um espaço depois de nunca é correto, e o teste que afirma a saída antiga foi corrigido junto com o comportamento.
Como ele sabe que um PDF é uma varredura?
Ao contar os caracteres por página, com um limite baixo o suficiente para que apenas uma digitalização genuína o faça.
Um documento digitalizado é um PDF cheio de imagens. Não há uma camada de texto, então a extração não retorna nada, e a resposta útil é dizer isso em vez de entregar um arquivo vazio.
0 chars over 3 pages treated as a scan
30 chars over 3 pages treated as a scan
36 chars over 3 pages has a text layer
11 chars over 1 page treated as a scan
12 chars over 1 page has a text layer
A linha tem doze caracteres por página. Isso não é zero de propósito: uma página digitalizada geralmente carrega um pequeno texto incidental do scanner, um número de página estampado pelo software ou uma marca d'água. Um limite em zero chamaria esses documentos de extraíveis e retornaria três números de página.
Se o seu PDF for uma varredura, o próximo passo é OCR, e A conta medida do que quebra o OCR Tem a versão medida disso: inclinar três graus para você custa muito mais do que a baixa resolução.
E as colunas?
Eles intercalam, e esse é o limite que vale a pena conhecer antes de você confiar em qualquer extração.
As linhas são agrupadas primeiro pela linha de base, de modo que duas colunas de texto nas mesmas posições verticais são lidas em vez de para baixo. Em um teste de uma página de relatório de duas colunas, o resultado foi todas as linhas da coluna da esquerda seguidas imediatamente pela linha ao lado:
Revenue rose in the third Headcount grew by four, quarter on the back of
two all in support. The hiring large renewals signed in plan for the fourth
Cada palavra está presente. A ordem é inútil e a saída parece um absurdo fluente e não como um erro.
Os jornais acadêmicos e os jornais geralmente sobrevivem a isso, porque a sarjeta entre as colunas é ampla e regular o suficiente para uma etapa de segmentação de página encontrar. Um relatório com uma barra lateral, uma cotação de pull ou uma tabela de duas colunas frequentemente não.
A abordagem confiável em um documento com colunas é verificar o primeiro parágrafo de cada página. Se as frases forem unidas, extraia uma coluna por vez cortando ou aceite que você está recebendo uma bolsa de palavras em vez de prosa.
Você pode obter uma tabela de um PDF?
Os valores, sim. A tabela, não, e o motivo é que o PDF quase certamente não contém uma tabela.
Uma tabela em um PDF geralmente é desenhada em coordenadas com algumas linhas desenhadas ao redor dela. As linhas são operações gráficas sem nada no arquivo que as conecta ao texto que envolvem e as células não são células; são corridas que se alinham. Portanto, um extrator vê linhas de texto e as lê:
Region Q2 Q3 EMEA 412 455 AMER 388 401 APAC 120 166
Cada figura sobreviveu. Você não pode dizer a partir dessa linha a qual o quarto 412 pertence sem contar as posições e saber a forma do original.
O modo de preservação ajuda um pouco, porque mantém a estrutura da linha enquanto quebra de linha, o que indica pelo menos onde cada linha terminava. Ele ainda não oferece limites de coluna.
Duas coisas funcionam. um pdf marcado, exportado cuidadosamente do Word ou InDesign com estrutura de acessibilidade, carrega uma marca real de tabela e converte adequadamente; são minorias e geralmente você pode dizer porque o documento foi feito por alguém que se importava. E para uma tabela sem etiqueta que importa, copiá-la em uma planilha manualmente é mais rápida do que lutando contra qualquer ferramenta, o que é uma resposta insatisfatória que sobreviveu a todas as tentativas de melhorá-la.
O que os marcadores de página fazem?
Eles mantêm os números das páginas, o que importa mais do que parece para qualquer coisa que você cite ou faça referência.
Com os marcadores ativados, cada página é rotulada e as páginas vazias ainda são contadas:
--- Page 1 ---
First page text.
--- Page 2 ---
--- Page 3 ---
Third page text.
A página 2 não tinha texto extraível e ainda aparece. Isso é deliberado: uma folha digitalizada entre duas páginas de texto desapareceria e cada número posterior seria errado em uma.
Com os marcadores desligados, a página vazia não deixa rastros e as duas páginas do texto são simplesmente unidas. Essa é a escolha certa quando você vai colar o texto em algum lugar e a paginação é um artefato do PDF e não parte do documento.
O texto extraído é igual ao original?
Os personagens são. Todo o resto desapareceu e vale a pena ler a lista antes de você confiar na saída.
Negrito, itálico, fonte, tamanho, cor, tabelas como tabelas, imagens, cabeçalhos e rodapés distintos do texto do corpo, notas de rodapé distintas da frase que anotam, links como links e ordem de leitura de qualquer layout complexo. O que você obtém são personagens e quebras de parágrafo.
Para a maioria dos usos, isso é exatamente o correto. Pesquisar, citar, contar, alimentar um script, colar em um editor: todos querem as palavras e nada mais.
Where It Bites é um documento cujo significado vive em parte em sua formatação. Um contrato em que um termo definido é em negrito, uma especificação em que uma amostra de código é distinguida por sua fonte, um relatório em que uma nota de rodapé altera o que uma frase afirma. O texto extraído achata tudo isso, e nada na saída diz isso.
Você deve extrair para texto ou converter em Word?
Texto Se uma máquina o leu, diga se uma pessoa a editará.
Ambos executam a mesma remontagem, então a qualidade das palavras é idêntica. A diferença é apenas o que é escrito no final: a .txt arquivo ou os mesmos parágrafos dentro de um zip de XML.
| Você quer | usar |
|---|---|
| grep, pesquise ou feed um script | pdf para texto |
| Conte palavras ou analise o conteúdo | pdf para texto |
| Edite a prosa e envie | PDF para palavra |
| Mantenha o layout exatamente | nem; obtenha o arquivo original |
A última linha é a que as pessoas chegam querendo, e nenhuma extração dá a você. O guia de conversão de palavras Relembra o porquê, em detalhes, com uma tabela que volta como uma única linha de valores.
Qual o tamanho de um PDF que ele pode suportar?
Grande e o limite é a guia e não o formato.
Todo o arquivo é lido na memória da página e analisado aí, e o texto extraído é mantido ao lado dele. Algumas centenas de páginas de texto comum não são dignas de nota; uma varredura de mil páginas em alta resolução é uma proposta diferente, porque as imagens aparecem para o passeio, embora nenhuma delas receba texto.
Se um documento é grande o suficiente para se preocupar, o sinal é a análise, e não a extração. Retirar o texto de uma página já analisada é barato; colocar o arquivo no analisador é o que leva tempo e a memória.
Por que isso funciona no navegador?
Porque uma análise não precisa de um servidor e os PDFs que as pessoas extraem raramente são públicos.
O arquivo é lido do disco para a guia, analisado com PDF.js compilado para a web, remontado em texto e devolvido. Nenhuma solicitação carrega o documento, nada é armazenado e não há nenhuma cópia em qualquer lugar para ser retido nos termos que você não leu.
Os documentos em questão são contratos, declarações, cartas médicas, processos judiciais, documentos embargo, relatórios internos. A alternativa convencional carrega todo o arquivo para um serviço em troca de uma operação que é uma análise e algumas aritméticas nas coordenadas.
O custo é a memória da guia em arquivos muito grandes e nenhum OCR para digitalizações. Ambos são visíveis antes de você começar, em vez de ser descoberto depois.



