Ce que đ€ Transformers peut faire
đ€ Transformers est une bibliothĂšque de modĂšles prĂ©entraĂźnĂ©s Ă la pointe de la technologie pour les tĂąches de traitement du langage naturel (NLP), de vision par ordinateur et de traitement audio et de la parole. Non seulement la bibliothĂšque contient des modĂšles Transformer, mais elle inclut Ă©galement des modĂšles non-Transformer comme des rĂ©seaux convolutionnels modernes pour les tĂąches de vision par ordinateur. Si vous regardez certains des produits grand public les plus populaires aujourdâhui, comme les smartphones, les applications et les tĂ©lĂ©viseurs, il est probable quâune technologie dâapprentissage profond soit derriĂšre. Vous souhaitez supprimer un objet de fond dâune photo prise avec votre smartphone ? Câest un exemple de tĂąche de segmentation panoptique (ne vous inquiĂ©tez pas si vous ne savez pas encore ce que cela signifie, nous le dĂ©crirons dans les sections suivantes !).
Cette page fournit un aperçu des diffĂ©rentes tĂąches de traitement de la parole et de lâaudio, de vision par ordinateur et de NLP qui peuvent ĂȘtre rĂ©solues avec la bibliothĂšque đ€ Transformers en seulement trois lignes de code !
Audio
Les tĂąches de traitement audio et de la parole sont lĂ©gĂšrement diffĂ©rentes des autres modalitĂ©s principalement parce que lâaudio en tant que donnĂ©e dâentrĂ©e est un signal continu. Contrairement au texte, un signal audio brut ne peut pas discrĂ©tisĂ© de la maniĂšre dont une phrase peut ĂȘtre divisĂ©e en mots. Pour contourner cela, le signal audio brut est gĂ©nĂ©ralement Ă©chantillonnĂ© Ă intervalles rĂ©guliers. Si vous prenez plus dâĂ©chantillons dans un intervalle, le taux dâĂ©chantillonnage est plus Ă©levĂ© et lâaudio ressemble davantage Ă la source audio originale.
Les approches prĂ©cĂ©dentes prĂ©traitaient lâaudio pour en extraire des caractĂ©ristiques utiles. Il est maintenant plus courant de commencer les tĂąches de traitement audio et de la parole en donnant directement le signal audio brut Ă un encodeur de caractĂ©ristiques (feature encoder en anglais) pour extraire une reprĂ©sentation de lâaudio. Cela correspond Ă lâĂ©tape de prĂ©traitement et permet au modĂšle dâapprendre les caractĂ©ristiques les plus essentielles du signal.
Classification audio
La classification audio est une tùche qui consiste à attribuer une classe, parmi un ensemble de classes prédéfini, à un audio. La classification audio englobe de nombreuses applications spécifiques, dont certaines incluent :
- la classification dâenvironnements sonores : attribuer une classe (catĂ©gorie) Ă lâaudio pour indiquer lâenvironnement associĂ©, tel que âbureauâ, âplageâ ou âstadeâ.
- la dĂ©tection dâĂ©vĂ©nements sonores : Ă©tiqueter lâaudio avec une Ă©tiquette dâĂ©vĂ©nement sonore (âklaxon de voitureâ, âappel de baleineâ, âverre brisĂ©â)
- lâidentification dâĂ©lĂ©ments sonores : attribuer des tags (Ă©tiquettes en français) Ă lâaudio pour marquer des sons spĂ©cifiques, comme âchant des oiseauxâ ou âidentification du locuteur lors dâune rĂ©unionâ.
- la classification musicale : attribuer un genre Ă la musique, comme âmetalâ, âhip-hopâ ou âcountryâ.
>>> from transformers import pipeline
>>> classifier = pipeline(task="audio-classification", model="superb/hubert-base-superb-er")
>>> preds = classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> preds
[{'score': 0.4532, 'label': 'hap'},
{'score': 0.3622, 'label': 'sad'},
{'score': 0.0943, 'label': 'neu'},
{'score': 0.0903, 'label': 'ang'}]
Reconnaissance vocale
La reconnaissance vocale (Automatic Speech Recognition ou ASR en anglais) transcrit la parole en texte. Câest lâune des tĂąches audio les plus courantes en partie parce que la parole est une forme de communication la plus naturelle pour nous, humains. Aujourdâhui, les systĂšmes ASR sont intĂ©grĂ©s dans des produits technologiques âintelligentsâ comme les enceintes, les tĂ©lĂ©phones et les voitures. Il est dĂ©sormais possible de demander Ă nos assistants virtuels de jouer de la musique, de dĂ©finir des rappels et de nous indiquer la mĂ©tĂ©o.
Mais lâun des principaux dĂ©fis auxquels les architectures Transformer contribuent Ă rĂ©soudre est celui des langues Ă faibles ressources, câest-Ă -dire des langues pour lesquelles il existe peu de donnĂ©es Ă©tiquetĂ©es. En prĂ©entraĂźnant sur de grandes quantitĂ©s de donnĂ©es vocales dâun autre language plus ou moins similaire, le rĂ©glage fin (fine-tuning en anglais) du modĂšle avec seulement une heure de donnĂ©es vocales Ă©tiquetĂ©es dans une langue Ă faibles ressources peut tout de mĂȘme produire des rĂ©sultats de haute qualitĂ© comparĂ©s aux systĂšmes ASR prĂ©cĂ©dents entraĂźnĂ©s sur 100 fois plus de donnĂ©es Ă©tiquetĂ©es.
>>> from transformers import pipeline
>>> transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-small")
>>> transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
{'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}
Vision par ordinateur
Lâune des premiĂšres rĂ©ussites en vision par ordinateur a Ă©tĂ© la reconnaissance des numĂ©ros de code postal Ă lâaide dâun rĂ©seau de neurones convolutionnel (CNN). Une image est composĂ©e de pixels, chacun ayant une valeur numĂ©rique, ce qui permet de reprĂ©senter facilement une image sous forme de matrice de valeurs de pixels. Chaque combinaison de valeurs de pixels correspond aux couleurs dâune image.
Il existe deux approches principales pour résoudre les tùches de vision par ordinateur :
- Utiliser des convolutions pour apprendre les caractĂ©ristiques hiĂ©rarchiques dâune image, des dĂ©tails de bas niveau aux Ă©lĂ©ments abstraits de plus haut niveau.
- Diviser lâimage en morceaux (patches en anglais) et utiliser un Transformer pour apprendre progressivement comment chaque morceau est liĂ© aux autres pour former lâimage complĂšte. Contrairement Ă lâapproche ascendante des CNNs, cette mĂ©thode ressemble Ă un processus oĂč lâon dĂ©marre avec une image floue pour ensuite la mettre au point petit Ă petit.
Classification dâimages
La classification dâimages consiste Ă attribuer une classe, parmi un ensemble de classes prĂ©dĂ©fini, Ă toute une image. Comme pour la plupart des tĂąches de classification, les cas dâutilisation pratiques sont nombreux, notamment :
- SantĂ© : classification dâimages mĂ©dicales pour dĂ©tecter des maladies ou surveiller lâĂ©tat de santĂ© des patients.
- Environnement : classification dâimages satellites pour suivre la dĂ©forestation, aider Ă la gestion des terres ou dĂ©tecter les incendies de forĂȘt.
- Agriculture : classification dâimages de cultures pour surveiller la santĂ© des plantes ou des images satellites pour analyser lâutilisation des terres.
- Ăcologie : classification dâimages dâespĂšces animales ou vĂ©gĂ©tales pour suivre les populations fauniques ou les espĂšces menacĂ©es.
>>> from transformers import pipeline
>>> classifier = pipeline(task="image-classification")
>>> preds = classifier(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> print(*preds, sep="\n")
{'score': 0.4335, 'label': 'lynx, catamount'}
{'score': 0.0348, 'label': 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor'}
{'score': 0.0324, 'label': 'snow leopard, ounce, Panthera uncia'}
{'score': 0.0239, 'label': 'Egyptian cat'}
{'score': 0.0229, 'label': 'tiger cat'}
DĂ©tection dâobjets
La dĂ©tection dâobjets, Ă la diffĂ©rence de la classification dâimages, identifie plusieurs objets dans une image ainsi que leurs positions, gĂ©nĂ©ralement dĂ©finies par des boĂźtes englobantes (bounding boxes en anglais). Voici quelques exemples dâapplications :
- Véhicules autonomes : détection des objets de la circulation, tels que les véhicules, piétons et feux de signalisation.
- Télédétection : surveillance des catastrophes, planification urbaine et prévisions météorologiques.
- Détection de défauts : identification des fissures ou dommages structurels dans les bùtiments, ainsi que des défauts de fabrication.
>>> from transformers import pipeline
>>> detector = pipeline(task="object-detection")
>>> preds = detector(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"], "box": pred["box"]} for pred in preds]
>>> preds
[{'score': 0.9865,
'label': 'cat',
'box': {'xmin': 178, 'ymin': 154, 'xmax': 882, 'ymax': 598}}]
Segmentation dâimages
La segmentation dâimages est une tĂąche qui consiste Ă attribuer une classe Ă chaque pixel dâune image, ce qui la rend plus prĂ©cise que la dĂ©tection dâobjets, qui se limite aux boĂźtes englobantes (bounding boxes en anglais). Elle permet ainsi de dĂ©tecter les objets Ă la prĂ©cision du pixel. Il existe plusieurs types de segmentation dâimages :
- Segmentation dâinstances : en plus de classifier un objet, elle identifie chaque instance distincte dâun mĂȘme objet (par exemple, âchien-1â, âchien-2â).
- Segmentation panoptique : combine segmentation sĂ©mantique et segmentation dâinstances, attribuant Ă chaque pixel une classe sĂ©mantique et une instance spĂ©cifique.
Ces techniques sont utiles pour les vĂ©hicules autonomes, qui doivent cartographier leur environnement pixel par pixel pour naviguer en toute sĂ©curitĂ© autour des piĂ©tons et des vĂ©hicules. Elles sont Ă©galement prĂ©cieuses en imagerie mĂ©dicale, oĂč la prĂ©cision au niveau des pixels permet de dĂ©tecter des anomalies cellulaires ou des caractĂ©ristiques dâorganes. Dans le commerce en ligne, la segmentation est utilisĂ©e pour des essayages virtuels de vĂȘtements ou des expĂ©riences de rĂ©alitĂ© augmentĂ©e, en superposant des objets virtuels sur des images du monde rĂ©el via la camĂ©ra.
>>> from transformers import pipeline
>>> segmenter = pipeline(task="image-segmentation")
>>> preds = segmenter(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> print(*preds, sep="\n")
{'score': 0.9879, 'label': 'LABEL_184'}
{'score': 0.9973, 'label': 'snow'}
{'score': 0.9972, 'label': 'cat'}
Estimation de la profondeur
Lâestimation de la profondeur consiste Ă prĂ©dire la distance de chaque pixel dâune image par rapport Ă la camĂ©ra. Cette tĂąche est cruciale pour comprendre et reconstruire des scĂšnes rĂ©elles. Par exemple, pour les voitures autonomes, il est essentiel de dĂ©terminer la distance des objets tels que les piĂ©tons, les panneaux de signalisation et les autres vĂ©hicules pour Ă©viter les collisions. Lâestimation de la profondeur permet Ă©galement de crĂ©er des modĂšles 3D Ă partir dâimages 2D, ce qui est utile pour gĂ©nĂ©rer des reprĂ©sentations dĂ©taillĂ©es de structures biologiques ou de bĂątiments.
Il existe deux principales approches pour estimer la profondeur :
- StĂ©rĂ©o : la profondeur est estimĂ©e en comparant deux images dâune mĂȘme scĂšne prises sous des angles lĂ©gĂšrement diffĂ©rents.
- Monoculaire : la profondeur est estimĂ©e Ă partir dâune seule image.
>>> from transformers import pipeline
>>> depth_estimator = pipeline(task="depth-estimation")
>>> preds = depth_estimator(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
Traitement du langage naturel
Les tĂąches de traitement du langage naturel (Natural Language Processing ou NLP en anglais) sont courantes car le texte est une forme naturelle de communication pour nous. Pour quâun modĂšle puisse traiter le texte, celui-ci doit ĂȘtre tokenisĂ©, câest-Ă -dire divisĂ© en mots ou sous-mots appelĂ©s âtokensâ, puis converti en nombres. Ainsi, une sĂ©quence de texte peut ĂȘtre reprĂ©sentĂ©e comme une sĂ©quence de nombres, qui peut ensuite ĂȘtre utilisĂ©e comme donnĂ©es dâentrĂ©e pour un modĂšle afin de rĂ©soudre diverses tĂąches de traitement du langage naturel.
Classification de texte
La classification de texte attribue une classe Ă une sĂ©quence de texte (au niveau dâune phrase, dâun paragraphe ou dâun document) Ă partir dâun ensemble de classes prĂ©dĂ©fini. Voici quelques applications pratiques :
- Analyse des sentiments : étiqueter le texte avec une polarité telle que
positive
ounégative
, ce qui aide à la prise de décision dans des domaines comme la politique, la finance et le marketing. - Classification de contenu : organiser et filtrer les informations en attribuant des tags sur des sujets spécifiques, comme
météo
,sports
oufinance
, dans les flux dâactualitĂ©s et les rĂ©seaux sociaux.
>>> from transformers import pipeline
>>> classifier = pipeline(task="sentiment-analysis")
>>> preds = classifier("Hugging Face is the best thing since sliced bread!")
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> preds
[{'score': 0.9991, 'label': 'POSITIVE'}]
Classification des tokens
Dans les tĂąches de traitement du language naturel, le texte est dâabord prĂ©traitĂ© en le sĂ©parant en mots ou sous-mots individuels, appelĂ©s tokens. La classification des tokens attribue une classe Ă chaque token Ă partir dâun ensemble de classes prĂ©dĂ©fini.
Voici deux types courants de classification des tokens :
- Reconnaissance dâentitĂ©s nommĂ©es (Named Entity Recognition ou NER en anglais) : Ă©tiqueter un token selon une catĂ©gorie dâentitĂ©, telle quâorganisation, personne, lieu ou date. La NER est particuliĂšrement utilisĂ©e dans les contextes biomĂ©dicaux pour identifier des gĂšnes, des protĂ©ines et des noms de mĂ©dicaments.
- Ătiquetage des parties du discours (Part of Speech ou POS en anglais) : Ă©tiqueter un token en fonction de sa partie du discours, comme nom, verbe ou adjectif. Le POS est utile pour les systĂšmes de traduction afin de comprendre comment deux mots identiques peuvent avoir des rĂŽles grammaticaux diffĂ©rents (par exemple, âbanqueâ comme nom versus âbanqueâ comme verbe).
>>> from transformers import pipeline
>>> classifier = pipeline(task="ner")
>>> preds = classifier("Hugging Face is a French company based in New York City.")
>>> preds = [
... {
... "entity": pred["entity"],
... "score": round(pred["score"], 4),
... "index": pred["index"],
... "word": pred["word"],
... "start": pred["start"],
... "end": pred["end"],
... }
... for pred in preds
... ]
>>> print(*preds, sep="\n")
{'entity': 'I-ORG', 'score': 0.9968, 'index': 1, 'word': 'Hu', 'start': 0, 'end': 2}
{'entity': 'I-ORG', 'score': 0.9293, 'index': 2, 'word': '##gging', 'start': 2, 'end': 7}
{'entity': 'I-ORG', 'score': 0.9763, 'index': 3, 'word': 'Face', 'start': 8, 'end': 12}
{'entity': 'I-MISC', 'score': 0.9983, 'index': 6, 'word': 'French', 'start': 18, 'end': 24}
{'entity': 'I-LOC', 'score': 0.999, 'index': 10, 'word': 'New', 'start': 42, 'end': 45}
{'entity': 'I-LOC', 'score': 0.9987, 'index': 11, 'word': 'York', 'start': 46, 'end': 50}
{'entity': 'I-LOC', 'score': 0.9992, 'index': 12, 'word': 'City', 'start': 51, 'end': 55}
RĂ©ponse Ă des questions - ( Question Answering )
La rĂ©ponse Ă des questions (Question Answering ou QA en anglais) est une tĂąche de traitement du language naturel qui consiste Ă fournir une rĂ©ponse Ă une question, parfois avec lâaide dâun contexte (domaine ouvert) et dâautres fois sans contexte (domaine fermĂ©). Cette tĂąche intervient lorsquâon interroge un assistant virtuel, par exemple pour savoir si un restaurant est ouvert. Elle est Ă©galement utilisĂ©e pour le support client, technique, et pour aider les moteurs de recherche Ă fournir des informations pertinentes.
Il existe deux types courants de réponse à des questions :
- Extractive : pour une question donnée et un contexte fourni, la réponse est extraite directement du texte du contexte par le modÚle.
- Abstractive : pour une question donnée et un contexte, la réponse est générée à partir du contexte. Cette approche utilise le
Text2TextGenerationPipeline
plutĂŽt que leQuestionAnsweringPipeline
montré ci-dessous.
>>> from transformers import pipeline
>>> question_answerer = pipeline(task="question-answering")
>>> preds = question_answerer(
... question="What is the name of the repository?",
... context="The name of the repository is huggingface/transformers",
... )
>>> print(
... f"score: {round(preds['score'], 4)}, start: {preds['start']}, end: {preds['end']}, answer: {preds['answer']}"
... )
score: 0.9327, start: 30, end: 54, answer: huggingface/transformers
Résumé de texte - ( Summarization )
Le rĂ©sumĂ© de text consiste Ă crĂ©er une version plus courte dâun texte tout en conservant lâessentiel du sens du document original. Câest une tĂąche de sĂ©quence Ă sĂ©quence qui produit un texte plus condensĂ© Ă partir du texte initial. Cette technique est utile pour aider les lecteurs Ă saisir rapidement les points clĂ©s de longs documents, comme les projets de loi, les documents juridiques et financiers, les brevets, et les articles scientifiques.
Il existe deux types courants de summarization :
- Extractive : identifier et extraire les phrases les plus importantes du texte original.
- Abstractive : gĂ©nĂ©rer un rĂ©sumĂ© qui peut inclure des mots nouveaux non prĂ©sents dans le texte dâorigine. Le
SummarizationPipeline
utilise lâapproche abstractive.
>>> from transformers import pipeline
>>> summarizer = pipeline(task="summarization")
>>> summarizer(
... "In this work, we presented the Transformer, the first sequence transduction model based entirely on attention, replacing the recurrent layers most commonly used in encoder-decoder architectures with multi-headed self-attention. For translation tasks, the Transformer can be trained significantly faster than architectures based on recurrent or convolutional layers. On both WMT 2014 English-to-German and WMT 2014 English-to-French translation tasks, we achieve a new state of the art. In the former task our best model outperforms even all previously reported ensembles."
... )
[{'summary_text': ' The Transformer is the first sequence transduction model based entirely on attention . It replaces the recurrent layers most commonly used in encoder-decoder architectures with multi-headed self-attention . For translation tasks, the Transformer can be trained significantly faster than architectures based on recurrent or convolutional layers .'}]
Traduction
La traduction convertit un texte dâune langue Ă une autre. Elle facilite la communication entre personnes de diffĂ©rentes langues, permet de toucher des audiences plus larges et peut aussi servir dâoutil dâapprentissage pour ceux qui apprennent une nouvelle langue. Comme le rĂ©sumĂ© de texte, la traduction est une tĂąche de sĂ©quence Ă sĂ©quence, oĂč le modĂšle reçoit une sĂ©quence dâentrĂ©e (un texte est ici vu comme une sĂ©quence de mots, ou plus prĂ©cisĂ©ment de tokens) et produit une sĂ©quence de sortie dans la langue cible.
Initialement, les modĂšles de traduction Ă©taient principalement monolingues, mais il y a eu rĂ©cemment un intĂ©rĂȘt croissant pour les modĂšles multilingues capables de traduire entre plusieurs paires de langues.
>>> from transformers import pipeline
>>> text = "translate English to French: Hugging Face is a community-based open-source platform for machine learning."
>>> translator = pipeline(task="translation", model="google-t5/t5-small")
>>> translator(text)
[{'translation_text': "Hugging Face est une tribune communautaire de l'apprentissage des machines."}]
Modélisation du langage
La modĂ©lisation du langage consiste Ă prĂ©dire un mot dans un texte. Cette tĂąche est devenue trĂšs populaire en traitement du language naturel, car un modĂšle de langage prĂ©entraĂźnĂ© sur cette tĂąche peut ensuite ĂȘtre ajustĂ© (finetuned) pour accomplir de nombreuses autres tĂąches. RĂ©cemment, les grands modĂšles de langage (LLMs) ont suscitĂ© beaucoup dâintĂ©rĂȘt pour leur capacitĂ© Ă apprendre avec peu ou pas de donnĂ©es spĂ©cifiques Ă une tĂąche, ce qui leur permet de rĂ©soudre des problĂšmes pour lesquels ils nâont pas Ă©tĂ© explicitement entraĂźnĂ©s. Ces modĂšles peuvent gĂ©nĂ©rer du texte fluide et convaincant, bien quâil soit important de vĂ©rifier leur prĂ©cision.
Il existe deux types de modélisation du langage :
Causale : le modÚle prédit le token suivant dans une séquence, avec les tokens futurs masqués.
>>> from transformers import pipeline >>> prompt = "Hugging Face is a community-based open-source platform for machine learning." >>> generator = pipeline(task="text-generation") >>> generator(prompt) # doctest: +SKIP
Masquée : le modÚle prédit un token masqué dans une séquence en ayant accÚs à tous les autres tokens de la séquence (passé et futur).
>>> text = "Hugging Face is a community-based open-source <mask> for machine learning." >>> fill_mask = pipeline(task="fill-mask") >>> preds = fill_mask(text, top_k=1) >>> preds = [ ... { ... "score": round(pred["score"], 4), ... "token": pred["token"], ... "token_str": pred["token_str"], ... "sequence": pred["sequence"], ... } ... for pred in preds ... ] >>> preds [{'score': 0.2236, 'token': 1761, 'token_str': ' platform', 'sequence': 'Hugging Face is a community-based open-source platform for machine learning.'}]
Multimodal
Les tĂąches multimodales nĂ©cessitent quâun modĂšle traite plusieurs types de donnĂ©es (texte, image, audio, vidĂ©o) pour rĂ©soudre un problĂšme spĂ©cifique. Par exemple, la gĂ©nĂ©ration de lĂ©gendes pour les images est une tĂąche multimodale oĂč le modĂšle prend une image en entrĂ©e et produit une sĂ©quence de texte dĂ©crivant lâimage ou ses propriĂ©tĂ©s.
Bien que les modĂšles multimodaux traitent divers types de donnĂ©es, ils convertissent toutes ces donnĂ©es en embeddings (vecteurs ou listes de nombres contenant des informations significatives). Pour des tĂąches comme la gĂ©nĂ©ration de lĂ©gendes pour les images, le modĂšle apprend les relations entre les embeddings dâimages et ceux de texte.
RĂ©ponse Ă des questions sur des documents - ( Document Question Answering )
La rĂ©ponse Ă des questions sur des documents consiste Ă rĂ©pondre Ă des questions en langage naturel en utilisant un document comme rĂ©fĂ©rence. Contrairement Ă la rĂ©ponse Ă des questions au niveau des tokens, qui prend du texte en entrĂ©e, cette tĂąche prend une image dâun document ainsi quâune question concernant ce document, et fournit une rĂ©ponse. Elle est utile pour analyser des donnĂ©es structurĂ©es et extraire des informations clĂ©es. Par exemple, Ă partir dâun reçu, on peut extraire des informations telles que le montant total et le change dĂ».
>>> from transformers import pipeline
>>> from PIL import Image
>>> import requests
>>> url = "https://huggingface.co/datasets/hf-internal-testing/example-documents/resolve/main/jpeg_images/2.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> doc_question_answerer = pipeline("document-question-answering", model="magorshunov/layoutlm-invoices")
>>> preds = doc_question_answerer(
... question="What is the total amount?",
... image=image,
... )
>>> preds
[{'score': 0.8531, 'answer': '17,000', 'start': 4, 'end': 4}]
En espĂ©rant que cette page vous ait donnĂ© plus dâinformations sur les diffĂ©rents types de tĂąches dans chaque modalitĂ© et lâimportance pratique de chacune dâelles. Dans la section suivante, vous dĂ©couvrirez comment đ€ Transformers fonctionne pour rĂ©soudre ces tĂąches.
< > Update on GitHub