Nicolas Cantu f50481cc38
Some checks failed
publish-images / docker-build-and-push (push) Failing after 23s
chore(ci): ajout workflow publish + nettoyage services + conf hosts
2025-09-11 16:49:23 +02:00

83 lines
2.1 KiB
Python

"""
Tâches OCR pour le traitement des documents
"""
import logging
from typing import Dict, Any
from celery_app import app
logger = logging.getLogger(__name__)
@app.task(bind=True, name='ocr.process_document')
def process_document_ocr(self, doc_id: str, context: Dict[str, Any]) -> Dict[str, Any]:
"""
Traitement OCR d'un document
Args:
doc_id: Identifiant du document
context: Contexte de traitement
Returns:
Résultat de l'OCR
"""
try:
logger.info(f"Début de l'OCR pour le document {doc_id}")
# Mise à jour du statut
self.update_state(
state='PROGRESS',
meta={'current_step': 'ocr_processing', 'progress': 0}
)
# TODO: Implémenter le traitement OCR réel
# Pour l'instant, simulation
import time
time.sleep(2) # Simulation du traitement
result = {
'doc_id': doc_id,
'status': 'completed',
'text_extracted': 'Texte extrait simulé',
'confidence': 0.95,
'pages_processed': 1,
'processing_time': 2.0
}
logger.info(f"OCR terminé pour le document {doc_id}")
return result
except Exception as e:
logger.error(f"Erreur lors de l'OCR du document {doc_id}: {e}")
raise
@app.task(name='ocr.batch_process')
def batch_process_ocr(doc_ids: list) -> Dict[str, Any]:
"""
Traitement OCR en lot
Args:
doc_ids: Liste des identifiants de documents
Returns:
Résultats du traitement OCR en lot
"""
logger.info(f"Traitement OCR en lot de {len(doc_ids)} documents")
results = []
for doc_id in doc_ids:
try:
result = process_document_ocr.delay(doc_id, {}).get()
results.append(result)
except Exception as e:
logger.error(f"Erreur lors de l'OCR en lot pour {doc_id}: {e}")
results.append({
'doc_id': doc_id,
'status': 'failed',
'error': str(e)
})
return {
'batch_status': 'completed',
'total_documents': len(doc_ids),
'results': results
}