View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Sujets
  • Toutes les vidéos
  • À propos

Retour à WWDC25

  • À propos
  • Résumé
  • Transcription
  • Code
  • Lire des documents à l’aide du framework Vision

    Découvrez les dernières avancées du framework Vision. Nous allons présenter RecognizeDocumentsRequest et comment vous pouvez l'utiliser pour lire des lignes de texte et les regrouper en paragraphes, lire des tableaux, etc. Et nous nous pencherons également sur la détection des taches sur l'objectif des appareils photo et sur la façon d'identifier les images potentiellement tachées dans les bibliothèques de photos ou votre propre pipeline de capture d'appareil photo.

    Chapitres

    • 0:00 - Introduction
    • 1:22 - Lire des documents
    • 13:35 - Détection des taches sur l’objectif de l’appareil photo
    • 17:59 - Mise à jour de la pose de la main

    Ressources

    • Classifying Images with Vision and Core ML
    • Image Classification with Vision and CoreML
    • Recognizing tables within a document
    • Vision
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC25

    • Découvrir les frameworks d’apprentissage automatique et d’IA sur les plates-formes Apple

    WWDC24

    • Discover Swift enhancements in the Vision framework

    WWDC23

    • Detect animal poses in Vision
    • Explore 3D body pose and person segmentation in Vision
  • Rechercher dans cette vidéo…

    Bonjour, je m’appelle Megan Williams et je suis ingénieure au sein de l’équipe Vision Framework. Vision offre des API qui permettent d’intégrer l’apprentissage automatique à vos apps pour divers cas d’utilisation, tels que la détection des objets et des personnes, le suivi de la pose du corps et des mains et l’analyse de trajectoire.

    Toutes ces API s’exécutent entièrement sur l’appareil, ce qui optimise et sécurise l’exécution des tâches de vision par ordinateur dans votre app.

    Nos API sont disponibles sur iOS, macOS, iPadOS, tvOS et visionOS.

    Vision a plus de 31 API pour différents types d’analyse d’images. Aujourd’hui, nous en ajoutons deux autres. Cette vidéo présente les nouvelles API de lecture de documents et de détection des taches sur l’objectif de l’appareil photo. Nous parlerons d’une mise à jour de la détection de la pose des mains.

    Allons-y.

    Vision offre la possibilité de détecter et d’extraire des lignes de texte d’une image à l’aide de RecognizeTextRequest. C’est une fonctionnalité utile, mais certains documents ont un format très structuré à partir duquel nous pourrions extraire encore plus d’informations.

    Par exemple, ce flyer inclut un titre, des paragraphes, une liste, un tableau et un code-barres.

    Si je ne lis que les lignes de texte du document, je perds des informations structurelles clés. Si j’extrayais simplement les lignes de texte de ce tableau, je ne saurais pas comment les lignes et les colonnes sont organisées. J’ai besoin de savoir ce que dit le texte, mais aussi comment il est mis en forme. Cette année, Vision inclut une nouvelle API pour faire cela et même plus.

    Voici RecognizeDocumentsRequest. Capable de reconnaître du texte en 26 langues, cette API permet aux développeurs d’extraire des éléments structurels et des informations clés des documents. Elle détecte des structures telles que les tableaux et les listes, regroupe les lignes de texte en paragraphes, détecte les codes lisibles par machine comme les codes QR et identifie des informations clés comme des adresses e-mail, des numéros de téléphone ou des URL. Ces fonctionnalités vous permettent de mieux comprendre le document et d’en faciliter l’analyse avec moins de lignes de code.

    Disons que nous gérons un magasin et que nous voulons que les clients qui s’y rendent puissent s’inscrire à notre newsletter mensuelle.

    Nous leur proposons donc une feuille d’inscription où ils peuvent noter leurs coordonnées.

    Je veux créer une app pour scanner cette feuille et créer un contact pour chaque personne.

    Auparavant, avec RecognizeTextRequest, le texte de chaque cellule du tableau aurait été extrait comme un objet distinct.

    Pour créer un contact pour chaque personne, je devrais utiliser les informations d’emplacement de chaque zone de texte pour déterminer quelles cellules font partie de la même ligne.

    Mais maintenant, avec RecognizeDocumentsRequest, le tableau est analysé pour vous. Les cellules sont automatiquement regroupées en lignes, ce qui facilite l’analyse de la feuille d’inscription. Voyons comment utiliser l’API.

    RecognizeDocumentsRequest est comme les autres requêtes dans Vision. Pour découvrir comment utiliser le framework Vision, consultez la présentation de la WWDC 2024 sur les améliorations apportées à Swift dans le framework Vision. Pour rappel, voici les points importants.

    Vision traite les images à l’aide de requêtes. La requête détermine le type d’analyse d’image à effectuer. Nous pouvons effectuer la requête sur une image pour générer des observations. Ces observations donnent des informations sur l’image, telles que l’emplacement des visages.

    RecognizeDocumentsRequest génère une DocumentObservation.

    DocumentObservations vous renseigne sur le contenu et la structure du document. Lorsque vous exécutez RecognizeDocumentsRequest, Vision renvoie une observation de document par image. L’observation de document a une structure hiérarchique. Chaque document peut contenir : du texte, des tableaux, des listes ou des codes-barres.

    Les tableaux sont composés de cellules et les listes sont composées d’éléments, qui peuvent eux-mêmes contenir d’autres éléments tels que du texte. Maintenant que nous savons ce qu’est une observation de document, utilisons-la pour analyser la feuille d’inscription.

    Commençons par extraire du document la structure du tableau.

    Je vais prendre une photo du document avec mon iPad.

    Mon app utilise RecognizeDocumentsRequest pour détecter un tableau et le mettre en évidence à l’écran.

    Regardons le code.

    Je veux extraire le tableau de l’image que je viens de capturer. Je crée d’abord une RecognizeDocumentsRequest, puis j’effectue la requête sur l’image. Je reçois un DocumentObservation. Je peux accéder à la propriété tables du document pour extraire les tableaux de l’image.

    Dans ce cas, le document ne devrait contenir qu’un tableau. Je vais donc renvoyer le premier tableau détecté.

    Voyons ce que le tableau détecté contient.

    Il se compose d’un tableau de cellules en 2D. Ces cellules sont accessibles par lignes ou colonnes.

    La limite du tableau est définie comme zone de délimitation, ce qui donne ses coordonnées par rapport à l’image. Chaque cellule a une propriété indiquant à quelle ligne et à quelle colonne elle appartient.

    Comme une cellule peut couvrir plusieurs lignes ou colonnes, cette valeur s’exprime sous forme de plage.

    Le contenu de la cellule peut contenir tout élément d’un document, tel que du texte, des tableaux, des listes ou des codes-barres.

    Ces conteneurs ont leur propre zone de délimitation.

    En extrayant les données sous forme de tableau, je peux lire la feuille d’inscription ligne par ligne.

    Regardons le contenu de chaque cellule pour extraire le texte.

    Voyons le texte plus en détail. Il existe plusieurs façons de voir le texte dans un conteneur.

    La transcription fournit tout le texte d’un conteneur sous forme de chaîne. Les lignes sont une autre façon de voir le texte sous forme de tableau de lignes.

    Elles peuvent être regroupées en paragraphes pour illustrer la façon dont le texte serait lu. Une ligne non regroupée avec d’autres dans un paragraphe est un paragraphe à part entière. Nous pouvons également générer une liste de mots individuels, sauf dans certaines langues comme le chinois, le japonais, le coréen et le thaï.

    Les données détectées sont des chaînes spéciales qui représentent des informations clés de vos documents, telles que des adresses e-mail, des dates ou des URL. Le nouveau framework DataDetection de Vision permet de rechercher les données clés dans les chaînes.

    Les numéros de téléphone, adresses e-mail et adresses postales peuvent être détectés dans divers formats.

    Les URL sont détectées en tant que liens, et les heures et dates en tant qu’événements de calendrier.

    Les mesures et leur unité sont détectées ensemble, ainsi que les montants et leur devise.

    Les numéros de suivi, identifiants de paiement et numéros de vol peuvent aussi être identifiés.

    Avec toutes ces fonctionnalités, développons notre exemple d’app. Nous avons déjà détecté un tableau, à partir duquel nous pouvons extraire le texte pour créer la liste de contacts. Nous pouvons lire les noms de la première colonne, puis utiliser la détection des données pour identifier les coordonnées dans les autres colonnes.

    Mettons à jour l’exemple de code. Je vais analyser le tableau que j’ai détecté et générer une liste de contacts.

    Pour chaque contact, je veux un nom, une adresse e-mail et éventuellement un numéro de téléphone.

    Je vais passer en revue les lignes du tableau et créer un contact à partir de chaque ligne.

    La plupart des feuilles d’inscription ont le nom comme première colonne. Prenons la première cellule de la ligne.

    Je peux lire le texte de cette cellule pour obtenir le nom du contact.

    J’utilise la transcription pour générer le texte de la cellule sous forme de chaîne.

    Essayons de trouver d’autres coordonnées dans cette ligne.

    D’abord, je passe en revue les cellules restantes.

    Je peux ainsi rechercher les données détectées dans chaque cellule.

    Passons en revue les données pour voir ce que nous avons détecté.

    Je peux activer les détails des données pour rechercher des e-mails et des numéros de téléphone.

    Si je trouve une adresse e-mail, je peux créer un contact à partir des informations détectées.

    Maintenant, je peux facilement extraire une liste de contacts de la feuille d’inscription.

    Je vais transmettre cette liste à la vue qui affichera les contacts dans l’app. Voyons ces contacts.

    Parfait !

    On peut aussi exporter le tableau sous forme de chaîne séparée par des tabulations.

    Le tableau peut ainsi être copié et collé dans des apps compatibles comme Notes et Numbers.

    Pour voir le code de cette fonctionnalité, téléchargez l’exemple d’app sur le site web des développeurs d’Apple. Pour récapituler, RecognizeDocumentsRequest permet aux développeurs d’extraire facilement des informations clés de vos documents.

    L’interface de l’API permet de comprendre la structure du document. Vous pouvez ainsi analyser facilement le texte mis en forme comme les tableaux et identifier les informations clés comme les adresses e-mail et les numéros de téléphone.

    Parlons maintenant d’une autre nouveauté de Vision cette année :

    la détection des taches sur l’objectif de l’appareil photo.

    Lorsque je scanne ma feuille d’inscription avec mon appareil, mon doigt peut tacher accidentellement l’objectif.

    Cela génère des photos de mauvaise qualité qui peuvent être difficiles à traiter.

    Heureusement, Vision a une nouvelle fonctionnalité à cet effet. DetectLensSmudgeRequest identifie si une image a été prise avec un objectif taché. Vous pouvez ainsi inviter les utilisateurs à nettoyer l’objectif ou à fournir une autre photo. Utilisez cette requête pour vous assurer de ne traiter que des images de haute qualité dans vos apps.

    DetectLensSmudgeRequest fonctionne comme les autres requêtes dans le framework Vision. Vous pouvez effectuer la requête sur une image pour générer une observation de tache.

    Cette observation a un score de confiance indiquant la probabilité que l’image soit tachée.

    Ce score se situe toujours entre 0 et 1.

    Les scores proches de 1 indiquent une forte probabilité que l’image soit tachée.

    Un score de zéro indique une forte probabilité que l’image ne soit pas tachée. Voyons comment l’utiliser dans le code.

    Voici une image dont je veux savoir si elle est tachée.

    Créons une requête de détection des taches sur l’objectif.

    Exécutons ensuite cette requête sur l’image.

    Une observation de tache est générée.

    Son score de confiance nous indique la probabilité que l’image soit tachée.

    Nous pouvons le comparer à un seuil pour filtrer les images de mauvaise qualité.

    J’ai choisi un seuil de 0,9, au-delà duquel les images seront considérées comme tachées et ne seront donc pas traitées.

    Choisissez le seuil qui convient le mieux à votre app. Voici trois documents avec des scores de confiance différents.

    Un seuil élevé permet de traiter plus d’images, mais leur qualité pourra être inférieure.

    Un seuil faible rejette plus d’images, dont certaines pourront être des faux positifs, ce qui exclura des images de bonne qualité.

    Certaines images peuvent avoir un niveau de flou élevé sans que l’objectif ne soit taché.

    Par exemple, cette image est floue à cause du mouvement de l’appareil, qui peut produire des images ressemblant à celles d’un appareil photo avec un objectif taché. Pareil pour les photos prises avec une longue exposition, ou celles de nuages ou de brouillard. Notez que ce n’est pas parce qu’une photo a un faible taux de flou qu’elle est de haute qualité. Par exemple, cette image d’un évent n’est pas floue, mais ce n’est pas non plus une image intéressante ou visuellement attrayante que j’aimerais partager avec des amis. Vision a d’autres API qui peuvent être utilisées avec DetectLensSmudgeRequest pour trouver des photos de haute qualité.

    Si l’image contient des visages, DetectFaceCaptureQualityRequest permet de détecter les visages de bonne qualité. Cette requête génère un score de qualité compris entre 0 et 1, où 1 correspond à la qualité supérieure, pour chaque visage.

    Si l’image ne contient pas de visage, utilisez CalculateImageAestheticScoresRequest pour générer un score global pour cette image.

    Cette requête identifie aussi les images utilitaires, qui sont des photos bien prises, mais dont le contenu n’est pas mémorable, comme des images de documents ou de reçus. Familiarisez-vous avec CalculateImageAestheticScoresRequest grâce à la présentation WWDC 2024 de Vision.

    Enfin, parlons d’une mise à jour de la détection de la pose des mains.

    Depuis 2020, les développeurs peuvent utiliser DetectHandPoseRequest pour identifier l’emplacement de 21 articulations dans une main.

    Elles sont renvoyées comme HandPoseObservation.

    Cette technologie alimente les classificateurs ML de pose et d’action des mains, qui permettent d’identifier les poses et les gestes des mains.

    Par exemple, vous pouvez entraîner ces modèles à reconnaître les gestes contrôlant les fonctionnalités de votre app. Pour en savoir plus sur l’entraînement de ce type de classificateur, consultez la présentation de la WWDC 2021 sur le classement des poses et des actions de la main avec CreateML.

    Cette année, Vision remplace son modèle de détection de la pose des mains par un modèle modernisé plus petit.

    Le nouveau modèle détecte toujours 21 articulations, avec plus de précision et une utilisation de la mémoire et une latence inférieures. Bien que la précision du nouveau modèle soit améliorée, les articulations ne sont pas au même endroit que le modèle précédent. Si vous avez déjà entraîné un classificateur ML de pose ou d’action des mains par le passé, nous vous encourageons à le réentraîner avec le nouveau modèle pour améliorer la précision.

    Pour récapituler les nouveautés de cette année, deux nouvelles requêtes ont été présentées. Nous avons RecognizeDocumentsRequest pour la compréhension des documents structurés, et DetectCameraLensSmudgeRequest pour identifier les photos prises avec un objectif taché. Le modèle de détection de la pose des mains a aussi été mis à jour.

    L’exemple d’app de cette vidéo peut être téléchargé sur le site web des développeurs d’Apple. Consultez aussi la présentation de la WWDC 2024 sur les améliorations apportées à Swift dans le framework Vision pour en savoir plus sur les autres API de Vision. Merci de votre attention !

    • 6:39 - Detect tables

      /// Process an image and return the first table detected
      func extractTable(from image: Data) async throws -> DocumentObservation.Container.Table {
          
          // The Vision request.
          let request = RecognizeDocumentsRequest()
          
          // Perform the request on the image data and return the results.
          let observations = try await request.perform(on: image)
      
          // Get the first observation from the array.
          guard let document = observations.first?.document else {
              throw AppError.noDocument
          }
          
          // Extract the first table detected.
          guard let table = document.tables.first else {
              throw AppError.noTable
          }
          
          return table
      }
    • 10:50 - Parse contacts

      /// Extract name, email addresses, and phone number from a table into a list of contacts.
      private func parseTable(_ table: DocumentObservation.Container.Table) -> [Contact] {
          var contacts = [Contact]()
          
          // Iterate over each row in the table.
          for row in table.rows {
              // The contact name will be taken from the first column.
              guard let firstCell = row.first else {
                  continue
              }
              // Extract the text content from the transcript.
              let name = firstCell.content.text.transcript
              
              // Look for emails and phone numbers in the remaining cells.
              var detectedPhone: String? = nil
              var detectedEmail: String? = nil
              
              for cell in row.dropFirst() {
                  // Get all detected data in the cell, then match emails and phone numbers.
                  let allDetectedData = cell.content.text.detectedData
                  for data in allDetectedData {
                      switch data.match.details {
                      case .emailAddress(let email):
                          detectedEmail = email.emailAddress
                      case .phoneNumber(let phoneNumber):
                          detectedPhone = phoneNumber.phoneNumber
                      default:
                          break
                      }
                  }
              }
              // Create a contact if an email was detected.
              if let email = detectedEmail {
                  let contact = Contact(name: name, email: email, phoneNumber: detectedPhone)
                  contacts.append(contact)
              }
          }
          return contacts
      }
    • 0:00 - Introduction
    • Le framework Vision fournit des API permettant d’intégrer l’apprentissage automatique dans des apps sur diverses plateformes Apple. Ces API permettent d’effectuer des tâches telles que la détection de personnes et d’objets, le suivi de poses et l’analyse de trajectoires, le tout sur l’appareil pour des performances et une sécurité optimales. Le framework comprend actuellement 31 API, avec deux nouveaux ajouts pour la lecture de documents et la détection des traces sur l’objectif de l’appareil photo, ainsi qu’une mise à jour de la détection de la position des mains.

    • 1:22 - Lire des documents
    • Une nouvelle API appelée RecognizeDocumentsRequest s’appuie sur la fonctionnalité existante RecognizeTextRequest pour vous permettre d’extraire des informations structurées à partir de documents. Grâce à RecognizeDocumentsRequest, vous pouvez désormais traiter des images et obtenir une structure hiérarchique du contenu du document. L’API est capable de détecter divers éléments, tels que des tables, des listes, des paragraphes et des codes lisibles par machine, comme les codes QR. Cela va au-delà de la simple extraction de texte et comprend également sa mise en forme, ce qui facilite considérablement l’analyse et l’interprétation des données. Prenons l’exemple d’une feuille d’inscription contenant des noms, des adresses e-mail et des numéros de téléphone. Auparavant, l’extraction de ces informations était complexe et nécessitait une détermination manuelle des relations entre les cellules. Avec RecognizeDocumentsRequest, le système analyse automatiquement la table et regroupe les cellules en lignes, ce qui simplifie le processus de création de contacts à partir de la feuille numérisée.

    • 13:35 - Détection des taches sur l’objectif de l’appareil photo
    • La nouvelle fonctionnalité de détection des traces de doigts sur l’objectif de la caméra Vision, DetectLensSmudgeRequest, identifie les images tachées à l’aide d’un score de confiance compris entre 0 et 1. Vous pouvez définir des seuils pour filtrer les images de mauvaise qualité, les scores de confiance élevés indiquant une image tachée. Des seuils plus élevés traitent davantage d’images, mais peuvent inclure des images de qualité inférieure, tandis que des seuils plus bas rejettent davantage d’images, y compris éventuellement des images de bonne qualité. Des facteurs tels que le flou dû au mouvement de l’appareil photo, une longue exposition, des nuages ou du brouillard peuvent parfois entraîner des faux positifs. Vision propose également d’autres API pour évaluer la qualité des images, telles que DetectFaceCaptureQualityRequest pour les images contenant des visages et CalculateImageAestheticScoresRequest pour les images sans visages, y compris les documents ou les reçus.

    • 17:59 - Mise à jour de la pose de la main
    • Le framework Vision dispose également d’un modèle de détection des poses des mains mis à jour. La version originale, disponible depuis 2020, identifie 21 articulations de la main pour la reconnaissance gestuelle dans les apps. Le nouveau modèle est plus compact, plus rapide et plus précis, mais il utilise des emplacements d’articulation différents, ce qui nécessite un nouvel entraînement des classificateurs existants.

Developer Footer

  • Vidéos
  • WWDC25
  • Lire des documents à l’aide du framework Vision
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines