Si eres desarrollador de Python y quieres crear una herramienta de análisis sintáctico de datos, este tutorial es para ti. Le mostraremos cómo crear una herramienta eficaz de análisis sintáctico de documentos con Python y el conjunto de datos SROIE y le presentaremos las posibilidades del SDK Konfuzio. ¡Empecemos!
Aquí encontrará una breve introducción al análisis sintáctico de cadenas en Python.
Paso 1: Configure su entorno
Antes de empezar, asegúrate de que Python y todas las librerías necesarias están instaladas. Para ello, ejecute los siguientes comandos en su línea de comandos o terminal:
# Install Python packages
pip install opencv-python tensorflow numpy scikit-learnPaso 2: Cargar el conjunto de datos SROIE
El conjunto de datos SROIE consta de imágenes de Recibos y los archivos de anotación asociados. Así es como puede cargarlos:
import os
import cv2
# Verzeichnisse für SROIE-Bilder und -Annotationen
image_folder = "path/to/SROIE/image/folder"
annotation_folder = "path/to/SROIE/annotation/folder"
def load_sroie_dataset(image_folder, annotation_folder):
"""Load images and corresponding text from the SROIE dataset."""
images, extracted_texts = [], []
for filename in os.listdir(annotation_folder):
with open(os.path.join(annotation_folder, filename), "r") as file:
extracted_text = file.readlines()[1].strip()
image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
image = cv2.imread(image_path)
images.append(image)
extracted_texts.append(extracted_text)
return images, extracted_texts
images, extracted_texts = load_sroie_dataset(image_folder, annotation_folder)Paso 3: Preparar el conjunto de datos
Ahora queremos preprocesar las imágenes del conjunto de datos SROIE para su posterior entrenamiento:
output_folder = "path/to/output/folder"
def preprocess_images(image_folder, annotation_folder, output_folder):
"""Preprocess images and save them to the output directory."""
for filename in os.listdir(annotation_folder):
with open(os.path.join(annotation_folder, filename), "r") as file:
extracted_text = file.readlines()[1].strip()
image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
image = cv2.imread(image_path)
# Hier können Sie Bildvorverarbeitungsschritte hinzufügen
output_path = os.path.join(output_folder, filename.replace(".txt", ".jpg"))
cv2.imwrite(output_path, image)
preprocess_images(image_folder, annotation_folder, output_folder)Otro interesante conjunto de datos lo ofrece FUNSD+. Lea más ahora.
Paso 4: Ajuste y evaluación con el modelo donut
Para una mayor precisión Análisis sintáctico de documentos tendremos un modelo de donut preentrenado afinar en nuestros datos preprocesados:
import tensorflow as tf
from tensorflow.keras import layers, models
from sklearn.model_selection import train_test_split
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(images, extracted_texts, test_size=0.2, random_state=42)
def create_donut_model(input_shape, num_classes):
"""Create the Donut CNN model for text recognition."""
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes, activation='softmax')
])
return model
model = create_donut_model((height, width, channels), num_classes)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1)
test_loss, test_accuracy = model.evaluate(X_test, y_test)Resumen
La creación de una herramienta de análisis sintáctico de datos con Python y el conjunto de datos SROIE puede ser perfecta con el enfoque adecuado. Para obtener características y funcionalidades más avanzadas, integre el SDK de Konfuzio en sus proyectos. Eche un vistazo a la documentación de Konfuzio para obtener información completa.
¡Diviértase programando!
Más enlaces
- LayoutLM utilizando el conjunto de datos SROIE | Kaggle
- Extracción de Datos Estructurados de la Factura | por DLMade | Analytics Vidhya | Medium
- zzzDavid/ICDAR-2019-SROIE: ICDAR 2019 Robust Reading Challenge on Scanned Receipts OCR and Information Extraction (github.com)
