Ir para o conteúdo
bushin

Extrair dados de um PDF

Mensagens Recomendadas

bushin

Boa noite,

ando à procura de uma livraria que possa usar gratuitamente para extrair dados/texto de um PDF, para poder carregar a BD com o dito texto.

Já googlei... e a informação que encontro é incompleta ou tem um mau feedback sobre a possível resolução!

Agradeço qualquer orientação que me possam dar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

nunca fiz nada do tipo.

Normalmente uso o PDFSharp para criar PDFs.

Lendo as FAQ's, tem isto:

Can I use PDFsharp to extract text from PDF?

This can be done at a low level. You can get at the characters in the order they are drawn - and most applications draw them from top-left to bottom-right. There are no high-level functions that return words, paragraphs, or whole pages.

É uma questão de experimentares

http://www.pdfsharp.net/Features.ashx

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bushin

Obrigado pela sugestão nelsonr,

acabei por optar pelo iText sharp. Nas pesquisas que fiz esta livraria resolvia o pretendido que era extrair parte do texto (ex. Nome, data, montante ... etc).

Este foi o metodo que usei:

public static string GetTextFromAllPages(String pdfPath)	
 {
	 PdfReader reader = new PdfReader(pdfPath);

	 RenderFilter[] filters = new RenderFilter[1];
	 LocationTextExtractionStrategy regionFilter = new LocationTextExtractionStrategy();
											 //Rectangle(float llx, float lly, float urx, float ury)
	 filters[0] = new RegionTextRenderFilter(new Rectangle(31, 15, 356, 1224));
	 FilteredTextRenderListener strategy = new FilteredTextRenderListener(regionFilter, filters);
	 String result = PdfTextExtractor.GetTextFromPage(reader, 1, strategy);

	 return result.ToString();
	 }

O problema é que extrai mais texto que o pretendido (retangulo grande de mais ...). Alguma sugestão para conseguir colocar as coordenadas correctas?

Obrigado ..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bushin

Urgente alguém me consegue ajudar,

não consigo obter as coordenadas certas para extrair o texto que pretendo do pdf. Testei com a livraria comercial bytescout, usando a ferramenta que dispoibilizam para apanhar as coordenadas, consigo obter o texto que pretendo. Usando as mesmas coordenadas ou as apanhadas pela ferramenta "VeryPDF PDF Text Replacer" que são diferentes com iText sharp - não funciona.

A questão é, como saber a posição correcta do texto?

Obrigado,

bushin

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bruno1234

Há uns tempos precisei de indexar conteudos de ficheiros, entre eles pdf, para o Lucene e utilizei uma biblioteca que é o Tika.

O resultado na altura até foi bastante agradável.

Podes ver aqui uns exemplos: http://dovetailsoftware.com/clarify/kmiller/2010/07/02/using-the-tika-java-library-in-your-net-application-with-ikvm/

Está disponivel no nuget.


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bushin

Desculpa o feedback tardio bruno1234, o Tika não faz o que procuro.

A solução que consegui arranjar até ao momento foi usar a libraria iText. Extrair o texto todo e depois manipular o texto com "Substring", extraindo através da posição os caracteres pretendidos. Contudo não me parece ser a melhor abordagem.

Editado por bushin

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bushin

Não pretendo todo o texto, apenas parte. O objetivo é abrir faturas que estão em pdf e extrair o nome do cliente, valor pago etc.

A biblioteca obtém o texto em string mas isso já conseguia com PDFSharp, itext ...

Estive a pesquisar informação sobre a Tika e não consegui encontrar informação de como seleccionar só parte do texto sem recorrer a Substring. Penso que não é a melhor abordagem pois sendo as facturas dinamicas, esto é, poderam ter mais ou menos caracteres o que podera levar a uma extracção incorreta.

A biblioteca itext tem um metodo muito bom que é o Rectangle(float llx, float lly, float urx, float ury), permite extrair texto de uma determinada área recorrendo a coordenadas, o meu problema é saber na minha fatura quais são as respetivas coordenas.

Já testei com livrarias pagas, teem uma ferramenta que me permite obter essas coordenas (só funcionam para esta livraria) que depois posso usar no codigo de forma a extrair a zona do pdf pretendido.

PS:

O algoritmos que estou a usar no substring é: 1º pesquiso o campo que pretendo (Exemplo: Nome), devolve a posição, 2º Sabendo a posição, consigo prever o tamanho do campo (Nome: xxxx) para assim extrair "xxx".

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bushin

A minha ultima tentativa de extrair o pdf foi através de regular expression como descrevi no ultimo email. Tenho algumas coordenadas fixas, outras não. Ainda bem que colocas-te essa questão, faz -me muito mais sentido agora. Fizeste-me pensar melhor sobre a solução, Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.