Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
L'API de reconnaissance d'encre numérique de ML Kit vous permet de reconnaître du texte manuscrit, de classer des gestes sur une surface numérique dans des centaines de langues, et de classer des croquis. L'API de reconnaissance de l'encre numérique utilise la même technologie que celle qui alimente la reconnaissance de l'écriture manuscrite dans Gboard, Google Traduction et le jeu Quick, Draw!.
Grâce à la reconnaissance de l'encre numérique, vous pouvez:
Écrivez à l'écran au lieu de taper sur un clavier virtuel. Cela permet aux utilisateurs de dessiner des caractères qui ne sont pas disponibles sur leur clavier, comme ệ, अ ou 森 pour les claviers en alphabet latin.
Effectuez des opérations textuelles de base (navigation, modification, sélection, etc.) à l'aide de gestes.
Reconnaître les formes et les emojis dessinés à la main.
La reconnaissance d'encre numérique fonctionne avec les traits que l'utilisateur dessine à l'écran. Si vous devez lire du texte à partir d'images prises avec l'appareil photo, utilisez l'API Text Recognition.
La reconnaissance d'encre numérique fonctionne entièrement hors connexion et est compatible avec Android et iOS.
Prise en charge de la classification des gestes pour ces langages via les extensions -x-gesture.
Reconnaît les emoji et les formes de base
Préserve l'espace de stockage sur l'appareil en téléchargeant dynamiquement des packs de langue selon les besoins.
Le programme de reconnaissance utilise un objet Ink en entrée. Ink est une représentation vectorielle de ce que l'utilisateur a écrit à l'écran: une séquence de traits, chacun étant une liste de coordonnées avec des informations temporelles appelées points de contact. Un trait commence lorsque l'utilisateur pose son stylet ou son doigt vers le bas et se termine lorsqu'il le soulève. Le Ink est transmis à un programme de reconnaissance, qui renvoie un ou plusieurs résultats de reconnaissance possibles, avec des niveaux de confiance.
Exemples
Écriture manuscrite anglaise
L'image de gauche ci-dessous montre ce que l'utilisateur a dessiné à l'écran. L'image de droite est l'objet Ink correspondant. Elle contient les traits avec des points rouges représentant les points de contact de chaque trait.
Il y a quatre traits. Les deux premiers traits de l'objet Ink se présentent comme suit:
Encre
Trait 1
x
392, 391, 389, 287, etc.
y
52, 60, 76, 97, etc.
t
0, 37, 56, 75, etc.
Trait 2
x
497, 494, 493, 490, etc.
y
167, 165, 165, 165, etc.
t
694, 742, 751, 770, etc.
...
Lorsque vous envoyez ce Ink à un programme de reconnaissance pour la langue anglaise, il renvoie plusieurs transcriptions possibles, contenant cinq ou six caractères. Elles sont classées par niveau de confiance décroissant:
RecognitionResult
Candidat à la reconnaissance n° 1
Handw
Candidat à la reconnaissance n° 2
Handrw
Candidat à la reconnaissance n° 3
Hard
Candidat à la reconnaissance n° 4
Handu
Candidat à la reconnaissance n° 5
Handwe
Gestes
Les classificateurs de gestes classent un trait d'encre dans l'une des neuf classes de gestes listées ci-dessous.
Geste
Exemple
arch:above arch:below
caret:above caret:below
circle
corner:downleft
scribble
strike
verticalbar
writing
Emoji croquis
L'image de gauche ci-dessous montre ce que l'utilisateur a dessiné à l'écran. L'image de droite est l'objet Ink correspondant. Elle contient les traits avec des points rouges représentant les points de contact de chaque trait.
L'objet Ink contient six traits.
Encre
Trait 1
x
269, 266, 262, 255, etc.
y
40, 40, 40, 41...
t
0, 36, 56, 75, etc.
Trait 2
x
179, 182, 183, 185, etc.
y
157, 158, 159, 160, etc.
t
2 475, 2 522, 2 531, 2 541, etc.
...
Lorsque vous envoyez ce Ink à l'outil de reconnaissance d'emoji, vous obtenez plusieurs transcriptions possibles, classées par niveau de confiance décroissant:
RecognitionResult
Candidat à la reconnaissance n° 1
😂 (U+1F62D)
Candidat à la reconnaissance n° 2
😅 (U+1F605)
Candidat à la reconnaissance n° 3
😹 (U+1f639)
Candidat à la reconnaissance n° 4
💡 (U+1F604)
Candidat à la reconnaissance n° 5
😃 (U+1F606)
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 2025/07/25 (UTC)."],[[["\u003cp\u003eML Kit's Digital Ink Recognition API recognizes handwritten text and gestures, converting them into digital format, comparable to the technology used in Gboard and Google Translate.\u003c/p\u003e\n"],["\u003cp\u003eThis API enables on-screen writing in various languages, using gestures for text editing, and recognizing hand-drawn shapes and emojis, all without an internet connection.\u003c/p\u003e\n"],["\u003cp\u003eIt supports over 300 languages and 25+ writing systems, along with gesture classification and emoji recognition, functioning by processing stroke data of user input.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can integrate this feature to allow users to write with styluses or fingers, replacing or supplementing traditional keyboard input for a more natural and versatile user experience.\u003c/p\u003e\n"]]],["ML Kit's digital ink recognition API converts handwritten text, gestures, and sketches into digital formats. It operates offline on Android and iOS, supporting 300+ languages and 25+ writing systems. The API processes user-drawn strokes (Ink objects) to recognize text, emojis, and basic shapes, returning ranked recognition results. Gestures are classified into nine categories, aiding in text operations and user interface actions. Language packs are dynamically downloaded for space efficiency.\n"],null,["With ML Kit's digital ink recognition API, you can recognize handwritten text\nand classify gestures on a digital surface in hundreds of languages, as well as\nclassify sketches. The digital ink recognition API uses the same technology that\npowers handwriting recognition in Gboard, Google Translate, and the\n[Quick, Draw!](https://quickdraw.withgoogle.com/) game.\n\nDigital ink recognition allows you to:\n\n- Write on the screen instead of typing on a virtual keyboard. This lets users draw characters that are not available on their keyboard, such as ệ, अ or 森 for latin alphabet keyboards.\n- Perform basic text operations (navigation, editing, selection, and so on) using gestures.\n- Recognize hand‑drawn shapes and emojis.\n\nDigital ink recognition works with the strokes the user draws on the screen. If\nyou need to read text from images taken with the camera, use the\n[Text Recognition API](/ml-kit/vision/text-recognition).\n\nDigital ink recognition works fully offline and is supported on Android and iOS.\n\n[iOS](/ml-kit/vision/digital-ink-recognition/ios)\n[Android](/ml-kit/vision/digital-ink-recognition/android)\n\nKey Capabilities\n\n- Converts handwritten text to sequences of unicode characters\n- Runs on the device in near real time\n- The user's handwriting stays on the device, recognition is performed without any network connection\n- Supports 300+ languages and 25+ writing systems, see the [complete list of supported languages](/ml-kit/vision/digital-ink-recognition/base-models#text)\n - Supports gesture classification for these languages via [`-x-gesture` extensions](/ml-kit/vision/digital-ink-recognition/base-models#text)\n- Recognizes emojis and basic shapes\n- Keeps on-device storage low by dynamically downloading language packs as needed\n\nThe recognizer takes an `Ink` object as input. `Ink` is a vector representation\nof what the user has written on the screen: a sequence of *strokes* , each being\na list of coordinates with time information called *touch points* . A stroke\nstarts when the user puts their stylus or finger down and ends when they lift it\nup. The `Ink` is passed to a recognizer, which returns one or more possible\nrecognition results, with levels of confidence.\n\nExamples\n\nEnglish handwriting\n\nThe image on the left below shows what the user drew on the screen. The image on\nthe right is the corresponding `Ink` object. It contains the strokes with red\ndots representing the touch points within each stroke.\n\n\nThere are four strokes. The first two strokes in the `Ink` object look like\nthis:\n\n| **Ink** |||\n|----------|-----|-------------------------|\n| Stroke 1 | `x` | 392, 391, 389, 287, ... |\n| Stroke 1 | `y` | 52, 60, 76, 97, ... |\n| Stroke 1 | `t` | 0, 37, 56, 75, ... |\n| Stroke 2 | `x` | 497, 494, 493, 490, ... |\n| Stroke 2 | `y` | 167, 165, 165, 165, ... |\n| Stroke 2 | `t` | 694, 742, 751, 770, ... |\n| ... | | |\n\nWhen you send this `Ink` to a recognizer for the English language, it returns\nseveral possible transcriptions, containing five or six characters. They are\nordered by decreasing confidence:\n\n| **RecognitionResult** ||\n|-------------------------|--------|\n| RecognitionCandidate #1 | handw |\n| RecognitionCandidate #2 | handrw |\n| RecognitionCandidate #3 | hardw |\n| RecognitionCandidate #4 | handu |\n| RecognitionCandidate #5 | handwe |\n\nGestures\n\nGesture classifiers classify an ink stroke into one of nine gesture classes\nlisted below.\n\n| Gesture | Example |\n|-----------------------------|---------|\n| `arch:above` `arch:below` | |\n| `caret:above` `caret:below` | |\n| `circle` | |\n| corner:downleft | |\n| `scribble` | |\n| `strike` | |\n| `verticalbar` | |\n| `writing` | |\n\n| **Note:** It is not always possible to reliably distinguish some gestures from writing. For example, the `verticalbar` gesture may look exactly like the digit `1` or letter `l` when they are written as a vertical lines. To allow the user to use both gestures and writing, your application may need to consider the position of the writing or gesture: for the writing over existing text, prefer the gesture interpretation; for the writing over empty space, prefer the text interpretation.\n\nEmoji sketches\n\nThe image on the left below shows what the user drew on the screen. The image on\nthe right is the corresponding `Ink` object. It contains the strokes with red\ndots representing the touch points within each stroke.\n\n\nThe `Ink` object contains six strokes.\n\n\n| **Ink** |||\n|----------|-----|-----------------------------|\n| Stroke 1 | `x` | 269, 266, 262, 255, ... |\n| Stroke 1 | `y` | 40, 40, 40, 41, ... |\n| Stroke 1 | `t` | 0, 36, 56, 75, ... |\n| Stroke 2 | `x` | 179, 182, 183, 185, ... |\n| Stroke 2 | `y` | 157, 158, 159, 160, ... |\n| Stroke 2 | `t` | 2475, 2522, 2531, 2541, ... |\n| ... | | |\n\nWhen you send this `Ink` to the emoji recognizer, you get several possible\ntranscriptions, ordered by decreasing confidence:\n\n| **RecognitionResult** ||\n|-------------------------|--------------|\n| RecognitionCandidate #1 | 😂 (U+1f62d) |\n| RecognitionCandidate #2 | 😅 (U+1f605) |\n| RecognitionCandidate #3 | 😹 (U+1f639) |\n| RecognitionCandidate #4 | 😄 (U+1f604) |\n| RecognitionCandidate #5 | 😆 (U+1f606) |"]]