Meu sistema operacional é o Ubuntu 12.04. Como posso converter um arquivo pdf de escala de cinza para preto e branco? O arquivo pdf em escala de cinza vem da digitalização com a opção em escala de cinza, e o pdf em escala em preto e branco é exigido pelo OCR.
Atualizar:
Na sequência da resposta de Marco, o BW pdf não é bom e o arquivo original é aqui .
command-line
pdf
Tim
fonte
fonte
scantailor
scantailor
tem toneladas de outras características úteis quando se trata de preparar scans para OCR, e essa é a única razão pela qual eu sugeri-lo (como um comentário, não uma resposta)pdfimages
(poppler) para extrair imagens digitalizadas do seu contêiner PDF. Pode ser mais eficiente lidar com eles com o ImageMagick em primeiro lugar.Respostas:
1) Use o ghostscript para converter o PDF em um arquivo PostScript monocromático usando o dispositivo psmono :
2) Em seguida, converta o PostScript monocromático novamente em PDF:
EDIT: O
psmono
dispositivo cria uma imagem de meio-tom de 1 bit que aparentemente não é o que você deseja. Não consegui encontrar uma maneira de especificar um limite usando o ghostscript, então recorri ao imagemagick.convert
usa internamente o ghostscript para converter o PDF. Em seguida, aplica a filtragem de limite para produzir uma imagem de 1 bit e usa o ghostscript novamente para criar um PDF. Comoconvert
usa uma resolução de 75DPI por padrão, que pode não corresponder à sua resolução real, você pode fornecer odensity
argumento. E experimente com athreshold
configuração. Os valores ideais dependem muito do arquivo de entrada.fonte
A melhor maneira que eu descobri por aí, sem perda de qualidade, remove sombras, ruído, texto da página seguinte sangrando etc:
1) Primeiro converta pdf para imagens individuais
2) Segundo, remova sombras, ruído e texto da próxima página (créditos para este blog )
isso pode ser adicionado como uma etapa extra ou em vez do comando acima para obter apenas duas cores:
3) Para criar um arquivo pdf de cada imagem jpg sem perda de resolução ou qualidade:
4) Para concatenar as páginas pdf em uma:
5) E, por último, adiciono uma camada de texto com OCR que não altera a qualidade da digitalização nos PDFs para que possam ser pesquisados:
fonte
Eu também tinha alguns PDFs em cores digitalizados e em escala de cinza que queria converter para bw. Tentei usar
gs
com o código listado aqui e a qualidade da imagem é boa com o texto em pdf ainda lá. No entanto, esse código gs é convertido apenas em escala de cinza (conforme solicitado na pergunta) e ainda possui um tamanho de arquivo grande.convert
produz resultados muito ruins quando usado diretamente.Eu queria PDFs BW com boa qualidade de imagem e tamanho pequeno de arquivo. Minha solução usa
gs
para extrair arquivos bmp em escala de cinza do pdf,convert
para limitar esses bmps a bw e salvá-los como arquivos tiff e, em seguida, img2pdf para compactar as imagens tiff e mesclá-las em um único pdf.Eu tentei ir diretamente para tiff do pdf, mas a qualidade não é a mesma, então eu salvei cada página em bmp. Para um arquivo pdf de uma página,
convert
faz um ótimo trabalho de bmp para pdf. Exemplo:Para várias páginas, é
gs
possível mesclar vários arquivos pdf em um, masimg2pdf
gera um tamanho de arquivo menor que o gs. Os arquivos tiff devem ser descompactados como entrada para img2pdf. Lembre-se de que, para um grande número de páginas, os arquivos intermediários bmp e tiff tendem a ser grandes.pdftk
oujoinpdf
seria melhor se eles pudessem mesclar arquivos PDF compactadosconvert
.Imagino que exista uma solução mais elegante. No entanto, meu método produz resultados com qualidade de imagem muito boa e tamanho de arquivo muito menor. Para recuperar o texto no PDF bw, execute o OCR novamente.
Meu script de shell usa gs, convert e img2pdf. Altere os parâmetros (número de páginas, dpi de digitalização,% de limite etc.) listados no início, conforme necessário, e execute
chmod +x ./pdf2bw.sh
. Aqui está o script completo (pdf2bw.sh):fonte
Na verdade, se vier de uma digitalização, a única maneira razoável é usar pdfimages e converter os gráficos subjacentes. Eu usei esse script para convertê-lo:
fonte
Agradecemos a OccamsRazor por seu script, que faz um ótimo trabalho de conversão de PDFs em cores e em escala de cinza em uma versão monocromática compacta e legível. Este é realmente um comentário no post de OccamsRazor, mas não tenho pontos suficientes para comentar.
O script falhará,
img2pdf -o ./$output_pdf_name --dpi $dpi_res $input_files
pois--dpi
não é mais um argumento aceito para img2pdf. Em vez disso, obtém a resolução do arquivo de entrada, para que você possa deixá-la de fora.Aqui está a minha versão do script. Como não queria editar o script para cada arquivo, passo o número de páginas e o nome do arquivo quando o executo. Eu tenho o conjunto nome de saída para e conjunto de resolução de 200 dpi, o que funciona para o meu trabalho, mas você pode querer mudá-lo ou transformá-los em e e passá-los.
00input_name
$3
$4
Para executar, use , por exemplo ,.
./pdf2bw.sh <number_of_pages> <input_name>
./pdf2bw.sh 55 input.pdf
fonte
"./$input_pdf_name"
e atéseq 1 "$num_pages"
. Além disso, você pode querer mudar`…`
para$(…)
- veja isso , isso e isso .