

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Extraer contenido de archivos PDF automáticamente con Amazon Textract
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract"></a>

*Tianxia Jia, Amazon Web Services*

## Resumen
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-summary"></a>

Muchas organizaciones necesitan extraer información de los archivos PDF que se cargan en sus aplicaciones empresariales. Por ejemplo, una organización podría necesitar extraer con precisión la información de archivos PDF fiscales o médicos para realizar análisis tributarios o procesar reclamaciones médicas.

En la nube de Amazon Web Services (AWS), Amazon Textract extrae automáticamente la información (por ejemplo, texto impreso, formularios y tablas) de los archivos PDF y produce un archivo en formato JSON que contiene información del archivo PDF original. Puede usar Amazon Textract en la consola de administración de AWS o mediante la implementación de llamadas a la API. Le recomendamos que utilice [llamadas a la API mediante programación](https://aws.amazon.com/textract/faqs/) para escalar y procesar automáticamente grandes cantidades de archivos PDF.

Cuando Amazon Textract procesa un archivo, crea la siguiente lista de objetos `Block`: páginas, líneas y palabras de texto, formularios (pares clave-valor), tablas y celdas, y elementos de selección. También se incluye otra información del objeto, por ejemplo, [cuadros delimitadores](https://docs.aws.amazon.com/textract/latest/dg/API_BoundingBox.html) IDs, intervalos de confianza y relaciones. Amazon Textract extrae la información del contenido en forma de cadenas. Es necesario contar con valores de datos correctamente identificados y transformados para que las aplicaciones posteriores puedan utilizarlos más fácilmente. 

Este patrón describe un step-by-step flujo de trabajo para usar Amazon Textract para extraer automáticamente el contenido de los archivos PDF y procesarlo para obtener un resultado limpio. El patrón utiliza una técnica de coincidencia de plantillas para identificar correctamente el campo, el nombre clave y las tablas requeridos y, a continuación, aplica correcciones posteriores al procesamiento a cada tipo de datos. Puede utilizar este patrón para procesar distintos tipos de archivos PDF y, a continuación, escalar y automatizar este flujo de trabajo para procesar archivos PDF con un formato idéntico.   

## Requisitos previos y limitaciones
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Un bucket de Amazon Simple Storage Service (Amazon S3) existente en el que almacenar los archivos PDF una vez convertidos a formato JPEG para su procesamiento por Amazon Textract. Para obtener más información sobre los buckets de S3, consulte la [Información general de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) en la documentación de Amazon S3.
+ El cuaderno de Jupyter `Textract_PostProcessing.ipynb` (adjunto), instalado y configurado. Para obtener más información sobre las libretas Jupyter, consulta [Crear una libreta Jupyter en](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-prepare.html) la documentación de Amazon. SageMaker 
+ Archivos PDF existentes que tengan un formato idéntico.
+ Conocimientos de Python.

**Limitaciones**
+ Sus archivos PDF deben ser de buena calidad y claramente legibles. Se recomiendan archivos PDF nativos, pero puede utilizar documentos escaneados y convertidos a formato PDF si todas las palabras individuales se leen con claridad. Para obtener más información al respecto, consulte [Preprocesamiento de documentos PDF con Amazon Textract: detección y eliminación de imágenes](https://aws.amazon.com/blogs/machine-learning/process-text-and-images-in-pdf-documents-with-amazon-textract/) en el blog de AWS Machine Learning.
+ Con los archivos de varias páginas, puede utilizar una operación asíncrona o combinar los archivos PDF en una única página y utilizar una operación síncrona. Para obtener más información sobre estas dos opciones, consulte [Detección y análisis de texto en documentos de varias páginas](https://docs.aws.amazon.com/textract/latest/dg/async.html) y [Detección y análisis de texto en documentos de una sola página](https://docs.aws.amazon.com/textract/latest/dg/sync.html) en la documentación de Amazon Textract.

## Arquitectura
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-architecture"></a>

El flujo de trabajo de este patrón ejecuta primero Amazon Textract sobre un archivo PDF de muestra (*Primera ejecución*) y, a continuación, lo ejecuta en archivos PDF que tengan un formato idéntico al del primer PDF (*Ejecución repetida*). El siguiente diagrama muestra el flujo de trabajo combinado de la *Primera ejecución* y la *Ejecución repetida* que extrae de forma automática y repetida el contenido de archivos PDF con idénticos formatos.

![\[Uso de Amazon Textract para extraer contenido de archivos PDF\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2d724523-2cab-42c9-a773-65857014d9ec/images/9e20070f-3e0c-46aa-aa98-a8b1eb3395dc.png)


 

El diagrama muestra el siguiente flujo de trabajo de este patrón:

1. Convierta un archivo PDF a formato JPEG y almacénelo en un bucket de S3. 

1. Llame a la API de Amazon Textract y analice el archivo JSON de respuesta de Amazon Textract. 

1. Edite el archivo JSON añadiendo el par `KeyName:DataType` correcto para cada campo obligatorio. Cree un archivo `TemplateJSON` para la etapa de *Ejecución repetida*.

1. Defina las funciones de corrección posterior al procesamiento para cada tipo de datos (por ejemplo, flotante, entero y fecha).

1. Prepare los archivos PDF que tengan un formato idéntico al del primer archivo PDF.

1. Llame a la API de Amazon Textract y analice el JSON de respuesta de Amazon Textract.

1. Haga coincidir el archivo JSON analizado con el archivo `TemplateJSON`.

1. Implemente las correcciones posteriores al procesamiento.

El archivo de salida JSON final tiene el `KeyName` y el `Value` correctos para cada campo obligatorio.

**Pila de tecnología de destino**
+ Amazon SageMaker 
+ Amazon S3 
+ Amazon Textract

**Automatizar y escalar**

Puede automatizar el flujo de trabajo de *Ejecución repetida* mediante una función de AWS Lambda que inicie Amazon Textract cuando se agregue un nuevo archivo PDF a Amazon S3. A continuación, Amazon Textract ejecuta los scripts de procesamiento y el resultado final se puede guardar en una ubicación de almacenamiento. Para obtener más información al respecto, consulte [Uso de un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) en la documentación de Lambda.

## Tools (Herramientas)
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-tools"></a>
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) es un servicio de aprendizaje automático totalmente gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático de forma rápida y sencilla y, a continuación, a implementarlos directamente en un entorno hospedado listo para la producción.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/what-is.html) facilita la adición de detección y análisis de texto de documentos a sus aplicaciones.

## Epics
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-epics"></a>

### Primera ejecución
<a name="first-time-run"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convertir el archivo PDF. | Para preparar el archivo PDF para la primera ejecución, combínelo en una única página y conviértalo a formato JPEG para la [operación síncrona](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) de Amazon Textract.También puede utilizar la [operación asíncrona](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) de Amazon Textract para archivos PDF de varias páginas. | Científico de datos, desarrollador | 
| Analizar el JSON de respuesta de Amazon Textract. | Abra el cuaderno de Jupyter `Textract_PostProcessing.ipynb` (adjunto) y llame a la API de Amazon Textract mediante el siguiente código:<pre>response = textract.analyze_document(<br />Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre>Analice y transforme el JSON de respuesta en un formulario y una tabla mediante el siguiente código:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Científico de datos, desarrollador | 
| Editar el archivo de TemplateJSON. | Edite el JSON analizado de cada `KeyName` y el `DataType` correspondiente (por ejemplo, cadena, flotante, entero o fecha) y las cabeceras de las tablas (por ejemplo, `ColumnNames` y `RowNames`).Esta plantilla se usa para cada tipo de archivo PDF individual, lo que significa que la plantilla se puede reutilizar para archivos PDF que tengan un formato idéntico. | Científico de datos, desarrollador | 
| Definir las funciones de corrección posterior al procesamiento. | Los valores de la respuesta de Amazon Textract para el archivo `TemplateJSON` son cadenas. No hay diferenciación por fecha, flotante, entero o divisa. Estos valores se deben convertir al tipo de datos correcto para su caso de uso posterior. Corrija cada tipo de datos según el archivo `TemplateJSON` mediante el siguiente código:<pre>finalJSON=postprocessingCorrection(parsedJSON,templateJSON)</pre> | Científico de datos, desarrollador | 

### Ejecución repetida
<a name="repeat-run"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare los archivos PDF. | Para preparar los archivos PDF, combínelos en una sola página y conviértalos a formato JPEG para la [operación síncrona](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) de Amazon Textract.También puede utilizar la [operación asíncrona](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) de Amazon Textract para archivos PDF de varias páginas. | Científico de datos, desarrollador | 
| Llamar a la API de Amazon Textract. | Para llamar a la API de Amazon Textract, utilice el siguiente código:<pre>response = textract.analyze_document(<br />        Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre> | Científico de datos, desarrollador | 
| Analizar el JSON de respuesta de Amazon Textract. | Analice y transforme el JSON de respuesta en un formulario y una tabla mediante el siguiente código:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Científico de datos, desarrollador | 
| Cargar el archivo TemplateJSON y hacerlo coincidir con el JSON analizado. | Utilice el archivo `TemplateJSON` para extraer los pares clave-valor y la tabla correctos mediante los siguientes comandos:<pre>form_kv_corrected=form_kv_correction(parseformKV,templateJSON)<br />form_table_corrected=form_Table_correction(parseformTables, templateJSON)<br />form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}</pre> | Científico de datos, desarrollador | 
| Correcciones posteriores al procesamiento. | Use `DataType` en el archivo `TemplateJSON` y funciones de procesamiento posterior para corregir los datos mediante el siguiente código: <pre>finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)</pre> | Científico de datos, desarrollador | 

## Recursos relacionados
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-resources"></a>
+ [Extracción automática de texto y datos estructurados de documentos con Amazon Textract](https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/)
+ [Extracción de texto y datos estructurados con Amazon Textract](https://aws.amazon.com/getting-started/hands-on/extract-text-with-amazon-textract/)
+ [Recursos de Amazon Textract](https://aws.amazon.com/textract/resources/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc)

## Conexiones
<a name="attachments-2d724523-2cab-42c9-a773-65857014d9ec"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/2d724523-2cab-42c9-a773-65857014d9ec/attachments/attachment.zip)