2012-03-06 101 views
6

Tengo una tarea bastante simple: necesito leer un archivo PDF y escribir su contenido de imagen sin tener en cuenta su contenido de texto. Entonces, esencialmente, necesito hacer el complemento de "guardar como texto".C# PDFSharp: ejemplos de cómo quitar texto de PDF?

Idealmente, preferiría evitar cualquier tipo de compresión de los contenidos de la imagen, pero si no es posible, también está bien.

¿Hay ejemplos de cómo hacerlo?

Gracias!

Respuesta

0

Ejemplo de bibliotecas PDFsharp extracción de imágenes de archivo .pdf:

link

library

EDIT:

Entonces, si desea extraer el texto de la imagen que usted tiene que utilizar las bibliotecas de OCR .

Hay dos buenas OCRs tessnet y MODI
Link to thread on stack
Pero estoy totalmente de puede recomendar MODI el que estoy usando ahora. Algunos ejemplos @codeproject.

EDIT 2:

Si no desea leer el texto de imágenes extraídas, debe escribir nuevo documento PDF y poner todos ellos en el mismo. Para escribir archivos PDF, uso MigraDoc. No es difícil usar esa biblioteca.

+0

He visto ese ejemplo, pero no estoy seguro de si tiene todas las piezas que necesito. Busca "imágenes" en el documento. También necesito preservar la representación del texto en forma de imagen, simplemente no quiero tener el texto detrás de la imagen.En otras palabras, quiero que la salida se vea exactamente como la entrada, pero quiero desactivar la capacidad de guardar el texto de la salida. –

+0

Entonces, según entiendo ahora, ¿quiere leer el texto de imágenes y texto sin formato desde el pdf? Y ponerlos juntos como qué? – Mariusz

+0

El PDF de entrada puede ser solo imagen o imagen + texto detrás de la imagen. Entonces, necesito tomar la entrada y hacer un PDF de solo imagen. En otras palabras, quiero exportar todos los componentes que no son de texto del PDF de entrada al PDF de salida y no exportar los componentes de texto. –

1

extraer texto de un PDF con PDFsharp en realidad puede ser muy fácil, dependiendo del tipo de documento y lo que va a hacer con él. Si el texto está en el documento como texto, y no como una imagen, y no le importa la posición o el formato, entonces es bastante simple. Este código obtiene todo el texto de la primera página de los archivos PDF con los que trabajo:

var doc = PdfReader.Open(docPath); 
string pageText = doc.Pages[0].Contents.Elements.GetDictionary(0).Stream.ToString(); 

doc.Pages.Count le da el número total de páginas, y acceder a cada uno a través de la matriz doc.Pages con el índice. No recomiendo usar foreach y Linq aquí, ya que las interfaces no se implementan bien. El índice pasado a GetDictionary es para el elemento de documento PDF; esto puede variar en función de cómo se producen los documentos. Si no obtiene el texto que está buscando, intente recorrer todos los elementos.

El texto que esto produce estará lleno de varios códigos de formato PDF. Si todo lo que necesita hacer es extraer cadenas, puede encontrar las que desee utilizando Regex o cualquier otro código de búsqueda de cadenas apropiado. Si necesita hacer algo con el formateo o el posicionamiento, entonces buena suerte, por lo que puedo decir, lo necesitará.

+0

"El texto que esto produce estará lleno de varios códigos de formato PDF". O con otras palabras: es fácil obtener algo que no es fácil de descifrar para obtener el texto real en la página. He visto convertidores PDF2DOC que funcionan bien con algunos archivos PDF, pero fallan miserablemente con otros. –

+0

Sí, en caso de que no fuera lo suficientemente claro, es muy fácil extraer fragmentos de texto para varios tipos de análisis de esta manera. No es nada fácil dar sentido al formato general de la página y mostrarla en pantalla o cambiar el diseño. – Mason

+0

Dibujando el texto "¡Hola, mundo!" puede verse como '240.2734 427.6833 Td (Hello, World!) Tj' o puede verse como' 240.2734 427.6833 Td <002B0048004F004F0052000F0003003A00520055004F00470004> Tj' o un poco diferente. Las implementaciones sencillas funcionarán con algunos archivos, pero fallarán con otros archivos. –