Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Với API nhận dạng mực kỹ thuật số của Bộ công cụ học máy, bạn có thể nhận dạng văn bản viết tay và phân loại các cử chỉ trên một bề mặt kỹ thuật số bằng hàng trăm ngôn ngữ, cũng như phân loại các bản phác thảo. API nhận dạng mực kỹ thuật số sử dụng cùng một công nghệ giúp hỗ trợ tính năng nhận dạng chữ viết tay trong Gboard, Google Dịch và trò chơi Quick, Draw!.
Tính năng nhận dạng mực kỹ thuật số cho phép bạn:
Viết trên màn hình thay vì nhập trên bàn phím ảo. Tính năng này cho phép người dùng vẽ các ký tự không có trên bàn phím, chẳng hạn như ệ, gặp hoặc 森 cho bàn phím chữ cái Latinh.
Thực hiện các thao tác văn bản cơ bản (thao tác, chỉnh sửa, chọn, v.v.) bằng cử chỉ.
Nhận biết hình dạng và biểu tượng cảm xúc do vẽ tay.
Tính năng nhận dạng mực kỹ thuật số hoạt động dựa trên những nét vẽ mà người dùng vẽ trên màn hình. Nếu bạn cần đọc văn bản trong hình ảnh chụp bằng máy ảnh, hãy sử dụng API Nhận dạng văn bản.
Tính năng nhận dạng mực kỹ thuật số hoạt động hoàn toàn ngoại tuyến và được hỗ trợ trên Android và iOS.
Nhận dạng biểu tượng cảm xúc và các hình dạng cơ bản
Duy trì dung lượng lưu trữ trên thiết bị thấp bằng cách tự động tải các gói ngôn ngữ xuống khi cần
Trình nhận dạng này lấy đối tượng Ink làm dữ liệu đầu vào. Ink là một cách biểu diễn vectơ của nội dung người dùng đã viết trên màn hình: một chuỗi các nét, mỗi nét là một danh sách toạ độ kèm theo thông tin thời gian được gọi là điểm chạm. Nét vẽ sẽ bắt đầu khi người dùng đặt bút cảm ứng hoặc ngón tay xuống và kết thúc khi họ nhấc ngón tay lên. Ink được chuyển đến một trình nhận dạng. Hàm này sẽ trả về một hoặc nhiều kết quả nhận dạng có thể có với mức độ tin cậy.
Ví dụ
Chữ viết tay tiếng Anh
Hình ảnh bên trái dưới đây cho thấy nội dung người dùng đã vẽ trên màn hình. Hình ảnh ở bên phải là đối tượng Ink tương ứng. Nó chứa các nét vẽ có các chấm màu đỏ đại diện cho các điểm tiếp xúc trong mỗi nét vẽ.
Có 4 nét. 2 nét đầu tiên trong đối tượng Ink sẽ có dạng như sau:
Mực
Nét 1
x
392, 391, 389, 287, ...
y
52, 60, 76, 97, ...
t
0, 37, 56, 75, ...
Nét 2
x
497, 494, 493, 490, ...
y
167, 165, 165, 165, ...
t
694, 742, 751, 770, ...
...
Khi bạn gửi Ink này cho một trình nhận dạng tiếng Anh, hệ thống sẽ trả về một số bản chép lời có thể có, chứa 5 hoặc 6 ký tự. Các biến này được sắp xếp theo mức độ tin cậy giảm dần:
RecognitionResult
Ứng viên công nhận số 1
thủ công
Ứng viên công nhận số 2
thủ công
Ứng viên công nhận số 3
chó cứng
Đề xuất công nhận số 4
thủ công
Đề xuất công nhận số 5
thuận tay
Cử chỉ
Thuật toán phân loại cử chỉ phân loại một nét mực thành một trong 9 lớp cử chỉ nêu dưới đây.
Cử chỉ
Ví dụ
arch:above arch:below
caret:above caret:below
circle
góc:xuống dưới bên trái
scribble
strike
verticalbar
writing
Hình phác hoạ biểu tượng cảm xúc
Hình ảnh bên trái dưới đây cho thấy nội dung người dùng đã vẽ trên màn hình. Hình ảnh ở bên phải là đối tượng Ink tương ứng. Nó chứa các nét vẽ có các chấm màu đỏ đại diện cho các điểm tiếp xúc trong mỗi nét vẽ.
Đối tượng Ink có 6 nét vẽ.
Mực
Nét 1
x
269, 266, 262, 255, ...
y
40, 40, 40, 41, ...
t
0, 36, 56, 75, ...
Nét 2
x
179, 182, 183, 185, ...
y
157, 158, 159, 160, ...
t
2475, 2522, 2531, 2541, ...
...
Khi gửi Ink này cho trình nhận dạng biểu tượng cảm xúc, bạn sẽ nhận được một số bản chép lời có thể có, theo thứ tự giảm dần độ tin cậy:
[null,null,["Cập nhật lần gần đây nhất: 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,["# Digital ink recognition\n\nWith 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\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--------\n\n### English 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\n### Gestures\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\n### Emoji 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) |"]]