Script para Extrair Informações de Arquivos PDF

1. Script para Extrair Informações de Arquivos PDF

Allan
mydrivemobile

(usa KUbuntu)

Enviado em 28/10/2019 - 17:37h

Olá pessoal, estou tendo um probleminha ao resolver um script que automatiza uma tarefa pra mim:
Gostaria de extrair de vários arquivos pdf os nomes das pessoas e seus respectivos salários, alguém poderia me ajudar?


  


2. Re: Script para Extrair Informações de Arquivos PDF

aguamole
aguamole

(usa KUbuntu)

Enviado em 28/10/2019 - 17:54h

E cade o que você fez no shell script ate agora.
Da um copiar e colar nele a que para nos ver o que você já tem.

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


3. Re: Script para Extrair Informações de Arquivos PDF

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 28/10/2019 - 19:03h

v aí
cut -d' ' -f4 nome_do_arquivo 




4. Re: Ajuda com Shell Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2019 - 20:08h

mydrivemobile escreveu:

Olá Marcelo obrigado por tentar me ajudar....
a formatação do texto não é essa que aparece ai... tentei postar na formação original e não conseguir como faço?


coloque o texto entre as tags
 texto  

Fica ao lado do ícone da "câmera".
mydrivemobile, o "REGISTRO" com as informações dos funcionários, tem a mesma quantidade de linhas?
Nesse do exemplo tem 24 linhas....
Se o arquivo seguir um "padrão", nem é necessário script,,,
Da para fazer com um comando de uma linha.

Nem sempre é necessário converter o pdf para texto,
Use o "pdfgrep" para fazer a busca de "strings" no pdf.

Att.: Marcelo Oliver


5. Obrigado a todos que estão tentando me ajudar!!!

Allan
mydrivemobile

(usa KUbuntu)

Enviado em 29/10/2019 - 09:33h

vamos lá: tenho vários arquivos que segue QUASE exatamente o mesmo padrão, vejam a saída de um dos arquivos:


MM. I Nome do Funcionário I
237 35874 16454 10/07/2007
ARTUR MORENO SOUSA 024.777.055-80
91
Lotação: 2- FUNDO MUNICIPAL DE EDUCAÇÃO
Cargo: AGENTE DE PORTARIA
SALÁRIO MÍNIMO Horas Mensais: 160
Nivel:
Regime: CONCURSADO
Função: AGENTE DE PORTARIA
Ref. Vencimentos Descontos
Evento Descrição
30 998,00
1 SALÁRIO BASE
2 65,60
7 SALARIO FAMÍLIA
TEMPO DE SERVIÇO 11 109,78
30
8.00 88,62
2 I.N.S.S
FGTS Mês Total Venc. Total Desc. Liquido
Base IRRF Base Previdência Base FGTS
8,78 1.173,38 88,62 1.084,76
1.107,78 109,78


CPF I Banco I Agência I Conta 1 Dt Admissão
Mat. 1 Nome do Funcionário I
017.786.275-01 237 35874 16527 10/07/2007
354 CLEDINA SANTOS DE OLIVEIRA CABRAL
Lotação: 2- FUNDO MUNICIPAL DE EDUCAÇÃO
Cargo: AUXILIAR DE SERVICOS GERAIS
NIVEL I Horas Mensais: 180
Nivel:
Regime: CONCURSADO
Função: AUXILIAR DE SERVIÇOS GERAIS
Ref. Vencimentos Descontos
'Evento Descrição
30 998,00
1 SALÁRIO BASE
SALARIO FAMÍLIA 2 65,60
7
TEMPO DE SERVIÇO 11 109,78
30
8.00 88,62
2 I.N.S.S
Total Venc. Total Desc. Liquido
Base IRRF Base Previdência Base FGTS FGTS Mês
109,78 8,78 1.173,38 88,62 1.084,76
1.107,78


CPF I Banco I Agência I Conta I Dt. Admissão
Mat. I Nome do Funcionário I
352.650.478-40 237 35874 19518 06/07/2015
253 CLEIDE DE SOUSA GONZAGA
Lotação: 2- FUNDO MUNICIPAL DE EDUCAÇÃO
Cargo: AUXILIAR DE SERVICOS GERAIS
NIVEL I Horas Mensais: 180
Nivel:
Regime: CONCURSADO
Função: AUXILIAR DE SERVIÇOS GERAIS
Ref. Vencimentos Descontos
Evento Descrição
30 998,00
1 SALÁRIO BASE
1 32,80
7 SALARIO FAMÍLIA
8.00 79,84
2 I.N.S.S
34/96 311,10
107 CAIXA ECONOMICA FEDERAL
FGTS Mês Total Venc. Total Desc. Liquido
Base IRRF Base Previdência Base FGTS
1.030,80 390,94 639,86
998,00 0,00


I Banco I Agência 1 Conta I Dt. Admissão
CPF
Mat. 1 Nome do Funcionário I
237 35874 25828 03/07/2015
906.648.845-04
153 ELIENE DE CASTRO SILVA
Lotação: 2- FUNDO MUNICIPAL DE EDUCAÇÃO
Cargo: MERENDEIRA
Horas Mensais: 160
Nivel: NIVEL I
Regime: CONCURSADO
Função: MERENDEIRA
Ref. Vencimentos Descontos
Evento Descrição
30 998,00
1 SALÁRIO BASE
8.00 79,84
2 I.N.S.S Liquido
Total Venc. Total Desc.
Base IRRF Base Previdência Base FGTS FGTS Mês
998,00 79,84 918,16
998,00 0,00



no caso acima gostaria de extrair o Nome do Funcioário e Total de Venc.
a saída do comando deverá ficar assim:

ARTUR MORENO SOUSA = 1.173,38
CLEDINA SANTOS DE OLIVEIRA CABRAL = 1.173,38
CLEIDE DE SOUSA GONZAGA = 1.030,80
ELIENE DE CASTRO SILVA = 998,00



6. Re: Script para Extrair Informações de Arquivos PDF

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/10/2019 - 17:17h

Boa tarde mydrivemobile.
Com esse "arquivo" que vc postou, até o momento consegui o seguinte:
sed '/^$/d' Novo|sed -r 's|^[ ]+||;s|[ ]{2,}|;|g;s|^Mat\..*$|\n&|'|awk 'BEGIN{RS="\n\n";FS="\n"} {print $3;print "CAMPOS:",NF"\n"}'
ARTUR MORENO SOUSA;024.777.055-80
CAMPOS: 25

354;CLEDINA SANTOS DE OLIVEIRA CABRAL
CAMPOS: 24

253;CLEIDE DE SOUSA GONZAGA
CAMPOS: 25

906.648.845-04
CAMPOS: 20
Veja que não seguem um padrão, quantidade de campos diferentes.....

Importante: Não Faz Parte do Comando, isso é minha assinatura echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


7. Re: Script para Extrair Informações de Arquivos PDF

Allan
mydrivemobile

(usa KUbuntu)

Enviado em 29/10/2019 - 21:29h

Já conseguir pegar somente os nomes das pessoas com o comando:

grep -of lista_funcionarios.txt folha_de_pagamento.txt | sort > encontrados.txt

e os valores com o comando:

grep -A3 "Total Venc\." folha_de_pagamento.txt | cut -c 105-136 | grep -o '[0-9].[0-9][0-9][0-9],[0-9][0-9]' > valores.txt

Só falta agora juntar os nomes do arquivo encontrados.txt com os valores do arquivo valores.txt com o sinal de igualdade ( = ) entre eles em cada linha.
nesse caso ai tive que converter os pdf em txt com o comando pdftotext. Gostaria de obter os mesmos resultados que tive com os comandos acima usando o comando pdfgrep, porém me parece que o pdfgrep não aceita entrada de um arquivo como padrão para realizar a filtragem como no caso acima, pelo que vi ele só aceita array de caracteres dentro de uma variável, coisa que ficaria meio inviável pra poder fazer com uma lista grande de nomes...


8. Re: Script para Extrair Informações de Arquivos PDF

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/10/2019 - 22:10h

mydrivemobile escreveu:

Já conseguir pegar somente os nomes das pessoas com o comando:

grep -of lista_funcionarios.txt folha_de_pagamento.txt | sort > encontrados.txt

e os valores com o comando:

grep -A3 "Total Venc\." folha_de_pagamento.txt | cut -c 105-136 | grep -o '[0-9].[0-9][0-9][0-9],[0-9][0-9]' > valores.txt

Só falta agora juntar os nomes do arquivo encontrados.txt com os valores do arquivo valores.txt com o sinal de igualdade ( = ) entre eles em cada linha.
nesse caso ai tive que converter os pdf em txt com o comando pdftotext. Gostaria de obter os mesmos resultados que tive com os comandos acima usando o comando pdfgrep, porém me parece que o pdfgrep não aceita entrada de um arquivo como padrão para realizar a filtragem como no caso acima, pelo que vi ele só aceita array de caracteres dentro de uma variável, coisa que ficaria meio inviável pra poder fazer com uma lista grande de nomes...

Vamos tentar....
sed -r "s/[ ]+/#/g;s/^#?[0-9]{3}#//" Novo|sed -r '/^#([0-9]{3}\.){2}([0-9]{3})\-[0-9]{2}$|^[0-9]{2}$|^#CPF$|^CAIXA#|Banco|#FAMÍLIA|#I.N.S.S$|^#?Nivel:$|^#[0-9]{2}$/d'|awk 'BEGIN{RS="\n\n\n";FS="\n";} {print "\nReg:"NR" NC:"NF"\n"$3"\n"$18;}'

Reg:1 NC:19
#ARTUR#MORENO#SOUSA#024.777.055-80
#8,78#1.173,38#88,62#1.084,76

Reg:2 NC:19
CLEDINA#SANTOS#DE#OLIVEIRA#CABRAL
#109,78#8,78#1.173,38#88,62#1.084,76

Reg:3 NC:19
CLEIDE#DE#SOUSA#GONZAGA
#1.030,80#390,94#639,86

Reg:4 NC:19
ELIENE#DE#CASTRO#SILVA
#998,00#79,84#918,16



porém me parece que o pdfgrep não aceita entrada de um arquivo como padrão para realizar
Testei aqui, não aceitou, olhei o man/help e não tem essa opção,
A alternativa seria colocar o padrão como variável ...
Essa REGEX, tá pegando "coisa demais"!!!!!
grep -o '[0-9].[0-9][0-9][0-9],[0-9][0-9]'
Att.: Marcelo Oliver


9. Re: Script para Extrair Informações de Arquivos PDF

Allan
mydrivemobile

(usa KUbuntu)

Enviado em 30/10/2019 - 14:55h

Tá faltando uma forma de pegar somente as colunas que tem Total Venc.
pois sendo assim logo abaixo dessa ocorrência tem os valores que desejo pegar, exemplo: 1.138,40, 998,00 etc.
ai ficaria mais fácil de aplicar um filtro depois só pra pegar o que for dígito, eliminando assim as incidências "Total Venc.", ficando somente os valores....


10. Re: Script para Extrair Informações de Arquivos PDF

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/10/2019 - 20:33h

mydrivemobile escreveu:

Tá faltando uma forma de pegar somente as colunas que tem Total Venc.
pois sendo assim logo abaixo dessa ocorrência tem os valores que desejo pegar, exemplo: 1.138,40, 998,00 etc.
ai ficaria mais fácil de aplicar um filtro depois só pra pegar o que for dígito, eliminando assim as incidências "Total Venc.", ficando somente os valores....

Sim, só falta isso..... kkkkkkk
Os valores não estão abaixo de Total Venc.,
Veja:
Reg:1 NC:19
MM.#I#Nome#do#Funcionário#I
35874#16454#10/07/2007
#ARTUR#MORENO#SOUSA#024.777.055-80
#Lotação:#2-#FUNDO#MUNICIPAL#DE#EDUCAÇÃO
Cargo:#AGENTE#DE#PORTARIA
#SALÁRIO#MÍNIMO#Horas#Mensais:#160
#Regime:#CONCURSADO
Função:#AGENTE#DE#PORTARIA
#Ref.#Vencimentos#Descontos
#Evento#Descrição
#30#998,00
#1#SALÁRIO#BASE
#2#65,60
#TEMPO#DE#SERVIÇO#11#109,78
#8.00#88,62
#FGTS#Mês#Total#Venc.#Total#Desc.#Liquido
#Base#IRRF#Base#Previdência#Base#FGTS
#8,78#1.173,38#88,62#1.084,76
#1.107,78#109,78


Reg:2 NC:19
Mat.#1#Nome#do#Funcionário#I
#017.786.275-01#237#35874#16527#10/07/2007
CLEDINA#SANTOS#DE#OLIVEIRA#CABRAL
#Lotação:#2-#FUNDO#MUNICIPAL#DE#EDUCAÇÃO
Cargo:#AUXILIAR#DE#SERVICOS#GERAIS
#NIVEL#I#Horas#Mensais:#180
#Regime:#CONCURSADO
Função:#AUXILIAR#DE#SERVIÇOS#GERAIS
#Ref.#Vencimentos#Descontos
#'Evento#Descrição
#30#998,00
#1#SALÁRIO#BASE
#7
#TEMPO#DE#SERVIÇO#11#109,78
#8.00#88,62
#Total#Venc.#Total#Desc.#Liquido
#Base#IRRF#Base#Previdência#Base#FGTS#FGTS#Mês
#109,78#8,78#1.173,38#88,62#1.084,76
#1.107,78


Reg:3 NC:19
#Mat.#I#Nome#do#Funcionário#I
#352.650.478-40#237#35874#19518#06/07/2015
CLEIDE#DE#SOUSA#GONZAGA
#Lotação:#2-#FUNDO#MUNICIPAL#DE#EDUCAÇÃO
#Cargo:#AUXILIAR#DE#SERVICOS#GERAIS
#NIVEL#I#Horas#Mensais:#180
#Regime:#CONCURSADO
#Função:#AUXILIAR#DE#SERVIÇOS#GERAIS
#Ref.#Vencimentos#Descontos
#Evento#Descrição
#30#998,00
#1#SALÁRIO#BASE
#1#32,80
#8.00#79,84
#34/96#311,10
#FGTS#Mês#Total#Venc.#Total#Desc.#Liquido
#Base#IRRF#Base#Previdência#Base#FGTS
#1.030,80#390,94#639,86
#998,00#0,00


Reg:4 NC:19
#Mat.#1#Nome#do#Funcionário#I
35874#25828#03/07/2015
ELIENE#DE#CASTRO#SILVA
#Lotação:#2-#FUNDO#MUNICIPAL#DE#EDUCAÇÃO
#Cargo:#MERENDEIRA
#Horas#Mensais:#160
#Nivel:#NIVEL#I
#Regime:#CONCURSADO
#Função:#MERENDEIRA
#Ref.#Vencimentos#Descontos
#Evento#Descrição
#30#998,00
#1#SALÁRIO#BASE
#8.00#79,84
#2#I.N.S.S#Liquido
#Total#Venc.#Total#Desc.
#Base#IRRF#Base#Previdência#Base#FGTS#FGTS#Mês
#998,00#79,84#918,16
#998,00#0,00

Provavelmente que perca o padrão na conversão para txt.....

Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts