Audiens: Artikel ini ditujukan untuk ML engineer, firmware lead, dan manajer produk OEM yang mengevaluasi mesin pengenalan tulisan tangan (HTR) on-device yang dikirimkan pada reading pen L5, Q8, dan T2. Kami mengasumsikan Anda memahami perbedaan antara pengenalan online dan offline, Anda mengetahui fungsi decoder CTC, dan Anda membutuhkan referensi teknis yang konkret untuk arsitektur model, akurasi, latensi, dan jejak memori di dalam lini 11 model.
Reading pen yang mengenali teks tercetak menggunakan OCR. Reading pen yang mengenali tulisan tangan menggunakan HTR — masalah yang fundamentally berbeda karena inputnya adalah rangkaian sampel goresan (x, y, t), bukan gambar statis. L5, Q8, dan T2 menyertakan mesin HTR sebagai fitur premium, terutama digunakan untuk input matematika, latihan isian, dan validasi jawaban singkat di buku kerja. Artikel ini membahas mesin tersebut, arsitektur model on-device, serta angka-angka yang Anda perlukan untuk menyusun spesifikasi OEM yang dapat dipertanggungjawabkan.
1. Mengapa OCR dan HTR Adalah Masalah yang Berbeda
Mesin OCR mengonsumsi gambar biner statis dan menghasilkan rangkaian karakter. Mesin HTR mengonsumsi rangkaian koordinat ujung pena sepanjang waktu dan menghasilkan rangkaian karakter. Perbedaan ini berdampak di seluruh pipeline:
- Modalitas input: citra 2D (OCR) vs aliran temporal 1D (HTR).
- Ukuran input: 640 x 480 x 1 byte per baris (OCR) vs 200 hingga 500 sampel per goresan (HTR).
- Pra-pemrosesan: binarisasi dan connected component (OCR) vs resampling dan smoothing (HTR).
- Arsitektur model: CNN 2D + RNN + CTC (OCR) vs CNN temporal 1D + BiGRU + CTC (HTR).
- Output: pengenalan kata penuh (OCR) vs karakter demi karakter secara bertahap (HTR).
Kedua mesin tersebut berbagi sebagian kode (decoder CTC, pencarian kamus, language model), tetapi front-end dan middle layer bersifat independen. Kami tidak menjalankan HTR pada B1, B2, F8, P2, K7, KF1, Q6, dan Y6 karena model-model tersebut tidak memiliki sensor sentuh 2D dan anggaran CPU yang cukup untuk model temporal.
2. Batas Perangkat Keras dan Model yang Menjalankan HTR
HTR hanya berjalan pada model dengan matrix-touch yang memiliki komputasi memadai: L5, Q8, dan T2. Ketiganya menggunakan SoC yang berbeda, sehingga model HTR dikompilasi per-platform.
| Model | SoC | Inti CPU | DSP/NPU | RAM tersedia untuk HTR | Flash untuk model |
|---|---|---|---|---|---|
| L5 | Cortex-A53 x4 @ 1.2 GHz | 4 | tidak ada (CPU saja) | 96 MB | 8 MB |
| Q8 | Cortex-A53 x4 @ 1.4 GHz | 4 | 0.5 TOPS NPU | 192 MB | 12 MB |
| T2 | Cortex-A55 x4 @ 1.8 GHz | 4 | 1.2 TOPS NPU | 384 MB | 18 MB |
L5 menjalankan model HTR pada inti CPU karena tidak memiliki NPU. Q8 dan T2 dapat berjalan pada CPU atau NPU; kami mengirimkan build CPU secara default dan build NPU sebagai opsi OEM bagi pembeli yang membutuhkan latensi lebih rendah.
3. Pipeline Pengambilan Goresan
Mesin HTR dimulai dari touch controller yang melaporkan sampel (x, y, t). Sampel tersebut telah diberi timestamp oleh touch IC. Host MCU merutekan sampel ke dalam ring buffer berkapasitas 1.024 entri, cukup untuk 8 detik tulisan berkelanjutan pada 120 Hz.
Langkah pra-pemrosesan berjalan secara real time saat sampel masuk:
- Smoothing: moving average 3-tap pada x dan y. Menghilangkan jitter sensor.
- Dehooking: menghilangkan goresan "hook" awal yang terjadi ketika stylus pertama kali menyentuh permukaan. Hook adalah busur cepat 30 mm hingga 50 mm dalam 30 ms pertama.
- Resampling: sampel goresan diresample menjadi 80 titik tetap tanpa memperhatikan kecepatan asli. Inilah yang membuat model tidak bergantung pada kecepatan menulis.
- Normalisasi: translasi centroid ke origin dan penskalaan agar masuk ke bounding box 20 mm x 20 mm.
- Ekstraksi fitur: hitung dx, dy, dx², dy² di setiap titik hasil resampling, ditambah flag pen-up. Vektor fitur berjumlah 5 nilai per titik.
Vektor 80 titik x 5 fitur dimasukkan ke model. Pra-pemrosesan menambah latensi 4 ms pada L5.
4. Arsitektur Model
Mesin HTR menggunakan CNN temporal 1D diikuti oleh bidirectional GRU 2 lapis, lalu decoder CTC. Arsitekturnya identik pada L5, Q8, dan T2; hanya kuantisasi bobot per-platform yang berbeda.
CNN temporal memiliki 3 lapisan:
- Conv1D(5 → 32, kernel 5, stride 1) + batch norm + ReLU.
- Conv1D(32 → 64, kernel 5, stride 2) + batch norm + ReLU.
- Conv1D(64 → 128, kernel 3, stride 2) + batch norm + ReLU.
Output CNN adalah rangkaian 20 langkah dengan 128 kanal per langkah (80 titik input di-downsample dengan faktor 4).
Bidirectional GRU 2 lapis memiliki 128 unit tersembunyi per arah, menghasilkan 256 unit per langkah. GRU berjalan di kedua arah dan outputnya digabungkan.
Decoder CTC adalah satu lapisan linear 256 → 96 unit (94 karakter ASCII yang dapat dicetak ditambah blank dan pad). Decoder ini mengeluarkan distribusi probabilitas atas 96 simbol pada setiap dari 20 langkah waktu. Fungsi loss CTC menyelaraskan output 20 langkah dengan rangkaian karakter target selama pelatihan.
Total parameter: 412.000 bobot untuk CNN + 296.000 untuk GRU + 24.700 untuk head CTC = 732.700 parameter.
Pada disk, model int8 yang dikuantisasi berukuran 1,84 MB. Pada L5, ukurannya membesar menjadi 1,92 MB saat runtime (dengan batch norm yang di-folding). Pada Q8 dan T2 dengan akselerasi NPU, model int8 berjalan sebagai satu blob 1,84 MB.
5. Data Pelatihan dan Akurasi
Model ini dilatih menggunakan korpus berisi 2,4 juta sampel tulisan tangan yang dikumpulkan dari 4.800 penulis di 14 negara. Penulis meliputi pengguna tangan kiri dan tangan kanan, dengan rentang usia 5 hingga 70 tahun. Setiap penulis menghasilkan 500 hingga 800 sampel berupa karakter tunggal, kata pendek, dan ekspresi numerik pendek. Dataset ini seimbang antara bahasa Inggris, Spanyol, Prancis, Jerman, Italia, Portugis, Arab, Tionghoa, Jepang, Korea, Rusia, Hindi, Thai, dan Vietnam.
Akurasi tingkat karakter pada set uji terpisah sebanyak 80.000 sampel (tidak termasuk dalam set pelatihan):
| Skrip | Akurasi L5 | Akurasi Q8 | Akurasi T2 |
|---|---|---|---|
| Bahasa Inggris (Latin) | 96,4% | 97,8% | 98,4% |
| Bahasa Spanyol | 96,1% | 97,6% | 98,2% |
| Bahasa Prancis | 95,7% | 97,3% | 98,0% |
| Bahasa Jerman | 95,4% | 97,0% | 97,7% |
| Bahasa Arab | 92,1% | 94,8% | 95,9% |
| Bahasa Mandarin | 93,8% | 95,9% | 96,7% |
| Bahasa Jepang (kana) | 94,0% | 96,0% | 96,9% |
| Bahasa Korea (Hangul) | 93,6% | 95,7% | 96,5% |
| Bahasa Hindi (Devanagari) | 92,8% | 95,1% | 96,1% |
| Bahasa Thailand | 91,9% | 94,4% | 95,5% |
| Bahasa Vietnam | 95,2% | 97,0% | 97,8% |
Akurasi tingkat kata pada set uji terpisah berisi 10.000 kata (Bahasa Inggris) mencapai 92,4% pada L5, 94,8% pada Q8, dan 95,7% pada T2. Akurasi kata selalu lebih rendah daripada akurasi karakter karena satu karakter yang salah dikenali sudah dapat membuat satu kata menjadi tidak valid.
6. Dekoder CTC dan Model Bahasa
Dekoder CTC menghasilkan serangkaian pasangan (simbol, probabilitas). Kami meng-collapse pengulangan dan menghapus blank untuk mendapatkan urutan karakter kandidat. Kemudian model bahasa 4-gram menilai ulang 5 kandidat teratas dan memilih yang memiliki skor tertinggi.
Model bahasa adalah model KenLM ringkas dengan 32 juta n-gram, memakan ruang 18 MB di disk dan 24 MB di RAM saat dijalankan. Model bahasa ini hanya mendukung bahasa Inggris pada L5; Q8 dan T2 dilengkapi model bahasa terpisah untuk bahasa Spanyol, Prancis, Jerman, Italia, Portugis, Arab, Tionghoa, Jepang, Korea, Rusia, Hindi, Thailand, dan Vietnam, dengan total 187 MB untuk keseluruhan 13 bahasa.
Bagi pembeli OEM yang ingin LM khusus (misalnya kosakata spesifik penerbit), kami dapat melatih LM domain dari korpus yang disediakan pelanggan dengan minimum 50.000 kalimat. Siklus pelatihan memakan waktu 6 jam pada satu GPU A100. LM khusus ini menggantikan LM umum di firmware dan menambah 4 hingga 8 MB tergantung ukuran kosakata.
7. Kuantisasi Model dan Varian Platform
Kami menyediakan tiga varian kuantisasi:
- float32: 2,93 MB di disk, 3,04 MB saat runtime, latensi CNN 32 ms pada L5. Hanya digunakan untuk debugging.
- int8 per-channel: 1,84 MB di disk, 1,92 MB saat runtime, latensi CNN 32 ms pada L5. Default untuk L5 dan build CPU untuk Q8/T2.
- int8 per-tensor (ramah NPU): 1,81 MB di disk, 1,81 MB saat runtime, latensi CNN 10 ms pada NPU Q8, 6 ms pada NPU T2.
Varian ramah NPU melakukan pembulatan setiap tensor dengan satu faktor skala tunggal, bukan skala per-channel, yang merugikan 0,3 poin persentase akurasi tetapi memungkinkan percepatan 3x hingga 5x pada NPU. Penurunan akurasi ini dipulihkan melalui langkah kalibrasi singkat di mana kami menjalankan 4.000 sampel melalui model int8 dan menyesuaikan skalanya.
8. Jejak Memori dan Konsumsi Daya
Pada L5 dengan model int8 per-channel, mesin HTR mengonsumsi:
- 1,92 MB model di flash, dimuat ke 1,92 MB RAM pada saat pengenalan.
- 24 MB LM di RAM (bahasa Inggris saja).
- 1,1 MB ring buffer dan area kerja pra-pemrosesan.
- Total working set: 27 MB RAM, menyisakan 69 MB headroom dari 96 MB yang tersedia.
Konsumsi daya rata-rata selama operasi pengenalan: 92 mW selama 70 ms = 6,4 mJ per kata. Pada daya pemindaian rata-rata 250 mW, mesin HTR menambah sekitar 2,5% ke total anggaran daya sistem. Pada Q8 dan T2, energi per pengenalan masing-masing adalah 3,4 mJ dan 2,1 mJ.
9. AQL pada Jalur Kalibrasi HTR
Setiap unit L5, Q8 dan T2 menjalankan self-test HTR selama 12 detik pada tahap kalibrasi. Pengujian ini menampilkan string tetap 32 karakter melalui touch simulator dan memeriksa output yang dikenali terhadap referensi yang sudah diketahui benar. Kriteria penerimaan:
- Kecocokan string tepat dalam 70 ms: lulus.
- Kecocokan string tepat dalam 90 ms: lulus dengan catatan.
- Kesalahan 1 karakter: rework (flash ulang model, kalibrasi ulang).
- Kesalahan 2+ karakter atau tidak ada output dalam 100 ms: scrap.
Dari 8.000 unit L5 yang dikalibrasi pada Q1 2026, hasil first-pass yield adalah 95,6%, tingkat rework 3,1%, tingkat scrap 1,3%. Penyebab scrap dominan adalah model int8 yang gagal flash akibat transfer OTA yang korup, yang kami mitigasi dengan verifikasi checksum pada setiap boot.
10. Menspesifikasikan HTR dalam Kontrak OEM
Spesifikasi HTR yang dapat dipertahankan meliputi:
- Arsitektur model dan kuantisasi (kami mengirim int8 per-channel secara default).
- Akurasi tingkat karakter per platform pada held-out test set (Inggris ≥ 96%, Mandarin ≥ 93%).
- Latensi pengenalan pada platform target (L5 ≤ 80 ms, Q8 ≤ 35 ms, T2 ≤ 25 ms).
- Ukuran LM dan bahasa yang didukung.
- SLA pelatihan LM kustom (10 hari kerja untuk pesanan di atas 5.000 unit).
- Kriteria lulus AQL (kecocokan tepat dalam 90 ms pada string kalibrasi).
Untuk informasi lebih lanjut mengenai cara mesin HTR terintegrasi dengan dictionary lookup, lihat Format dan Edisi File Kamus Pena Baca. Untuk struktur mesin OCR yang mengenali teks cetak, lihat Mesin OCR Pena Baca vs OCR Deep Learning. Untuk cara pemrosesan awal sampel sentuhan, lihat Uji Akurasi Sentuhan dan Jitter Pena Baca. Untuk bahasa spesifikasi OEM yang kami rekomendasikan untuk penerimaan tulisan tangan, lihat Template Spesifikasi OEM dan ODM Pena Baca. Untuk meminta sampel 5 unit dengan LM kustom yang dilatih pada korpus Anda, lihat /request-a-quote.
Bacaan Terkait
- Mesin OCR Pena Baca vs OCR Deep Learning
- Deteksi dan Segmentasi Teks Pena Baca
- Uji Akurasi Sentuhan dan Jitter Pena Baca
- Format dan Edisi File Kamus Pena Baca
- Algoritma Pengenalan Gestur Pena Baca
- Arsitektur Firmware Pena Baca Dijelaskan
Bacaan Tambahan: HTR untuk Input Matematika dan Persamaan
Mesin HTR juga digunakan dalam mode input matematika pada L5, Q8 dan T2. Pada mode matematika, model mengenali digit individual dan 18 simbol operator, ditambah 14 huruf Yunani dan 9 bentuk geometris. Kosakata mode matematika lebih kecil (41 simbol vs 96 pada kosakata HTR standar) sehingga language model dapat berupa bigram sederhana, bukan 4-gram, dan ukuran LM turun menjadi 1,4 MB.
Akurasi mode matematika pada 5.000 ekspresi test set adalah 98,7% tingkat simbol pada T2 dan 96,9% pada L5. Kami menggunakan grammar-aware decoder yang membatasi output ke expression tree yang valid, sehingga mengurangi kesalahan pada input ambigu seperti "x × 2" vs "x · 2" vs "x ÷ 2."
Untuk program matematika sekolah yang menyasar K-6, mode matematika HTR telah menjadi fitur yang paling banyak diminta dalam 18 bulan terakhir. Kami telah mengirim mode matematika HTR ke 7 pelanggan OEM di 5 negara, dengan total 14.500 unit T2. Rata-rata penggunaan mode matematika adalah 8,4 menit per siswa per hari, yang masih jauh di dalam daya tahan baterai T2 selama 14 jam.
Mode matematika juga merupakan jalur yang mengonsumsi sebagian besar dari 1,2 TOPS NPU pada T2. Input matematika berkelanjutan pada 30 ekspresi per menit mendorong utilisasi NPU T2 hingga 78%, dengan suhu paket SoC naik dari 28 °C saat idle menjadi 41 °C setelah 5 menit input terus-menerus. Kedua angka tersebut masih jauh di dalam rentang operasi komersial 0 °C hingga 70 °C.