AIAnalysisService
in package
Passerelle vers l'API d'intelligence artificielle d'analyse de cartes de visite (OCR).
Envoie la photo d'une carte de visite en multipart/form-data vers un service HTTP externe
dont l'URL est injectée depuis la configuration, puis normalise la réponse structurée renvoyée
par l'IA en un tableau prêt à alimenter la création d'un contact. Utilisé par le parcours de
numérisation de carte (scan depuis le mobile ou dépôt d'un fichier).
Table of Contents
Properties
- $aiApiUrl : string
- $httpClient : HttpClientInterface
Methods
- __construct() : mixed
- analyzeBusinessCard() : array<string, mixed>
- Analyse une carte de visite via l'API IA.
- extractContactData() : array<string, string>
- Extrait et formate les données structurées pour la création d'un contact.
Properties
$aiApiUrl
private
string
$aiApiUrl
$httpClient
private
HttpClientInterface
$httpClient
Methods
__construct()
public
__construct(HttpClientInterface $httpClient, string $aiApiUrl) : mixed
Parameters
- $httpClient : HttpClientInterface
-
Client HTTP Symfony utilisé pour appeler l'API IA.
- $aiApiUrl : string
-
URL absolue de l'endpoint d'analyse (paramètre de configuration).
analyzeBusinessCard()
Analyse une carte de visite via l'API IA.
public
analyzeBusinessCard(UploadedFile $file) : array<string, mixed>
Résout d'abord le chemin réel du fichier téléversé : si getPathname() ne pointe sur aucun
fichier existant (cas fréquent des photos prises depuis un mobile), tente getRealPath(),
puis, en dernier recours, recopie le contenu du fichier dans un fichier temporaire créé par
tempnam() dans le répertoire temporaire système. Construit ensuite un corps
multipart/form-data contenant le fichier (nom d'origine ou mobile_photo.jpg par défaut,
type MIME d'origine ou image/jpeg) et l'envoie en POST sur l'URL de l'API avec un délai
d'expiration de 3600 secondes.
Effets de bord : appel HTTP sortant, ouverture d'un handle de fichier et, dans le cas de repli, écriture d'un fichier temporaire (non supprimé par la méthode).
Parameters
- $file : UploadedFile
-
Image de la carte de visite à analyser.
Tags
Return values
array<string, mixed> —Charge utile JSON de l'API décodée, contenant notamment les clés
success, structured_data et extracted_text.
extractContactData()
Extrait et formate les données structurées pour la création d'un contact.
public
extractContactData(array<string, mixed> $aiResponse) : array<string, string>
Lit la clé structured_data de la réponse de l'IA (dont les libellés sont en français) et
la projette sur les champs attendus par le formulaire de contact. Le champ nom_complet est
découpé en deux parties au maximum sur le premier espace pour alimenter firstname et
lastname. Le téléphone retient telephone sinon mobile. Si site_web est renvoyé sous
forme de tableau, seule la première valeur est conservée (chaîne vide si le tableau est vide).
Toute clé absente donne une chaîne vide ; aucune écriture ni appel externe n'est effectué.
Parameters
- $aiResponse : array<string, mixed>
-
Réponse renvoyée par AIAnalysisService::analyzeBusinessCard().
Return values
array<string, string> —Données du contact : firstname, lastname, company,
job_title, email, phone, address, city,
postal_code, country, website, extracted_text.