Bagikan melalui


Gambaran Umum Analisis Tinta

API InkAnalysis menyediakan alat yang canggih kepada pengembang PC Tablet untuk memeriksa input tinta secara terprogram. API mengklasifikasikan tinta ke dalam kategori yang bermakna seperti kata, baris, paragraf, dan gambar.

Anda dapat menggunakan setiap klasifikasi dengan berbagai cara, termasuk meningkatkan hasil pengenalan untuk tulisan tangan.

Dasar-Dasar Analisis Tinta

Bagian ini memperkenalkan teknologi analisis tinta Platform PC Tablet dan menjelaskan kapan dan bagaimana menggunakannya.

API InkAnalysis secara efektif menggabungkan dua teknologi berbeda tetapi gratis: pengenalan tulisan tangan dan klasifikasi tata letak. Menggabungkan kedua teknologi ini memberikan hasil yang jauh lebih besar daripada bagian yang diambil sendiri.

Pengenalan tulisan tangan adalah analisis komputasi tinta digital tulisan tangan untuk mengembalikan interpretasi berbasis karakter dalam bahasa tertentu. Artinya, pengenalan tulisan tangan adalah bagaimana komputer "membaca" tulisan tangan seseorang.

Analisis Tinta dapat dipecah lebih lanjut menjadi klasifikasi tinta dan analisis tata letak. Klasifikasi tinta adalah pembagian komputasi tinta menjadi unit yang bermakna secara semantik seperti paragraf, garis, kata, dan gambar. Analisis tata letak adalah pemeriksaan komputasi input tinta untuk menentukan posisi tinta pada permukaan tinta dan bagaimana goresan berhubungan satu sama lain secara spasial dan bahkan semantik. Misalnya, analisis tata letak dapat memberi tahu Anda bahwa sepotong tinta tertentu adalah anotasi atau panggilan keluar.

Pengenalan

Salah satu contoh bagaimana kombinasi pengenalan dengan analisis tinta dalam API InkAnalysis membantu pengembang adalah peningkatan dalam hasil pengenalan. Mesin pengenalan tulisan tangan PC Tablet telah dirancang khusus untuk mengenali satu garis horizontal tinta. Namun, orang cenderung menulis beberapa baris saat membuat catatan, dan baris tersebut tidak dijamin horizontal dalam kaitannya dengan halaman. Dengan API InkAnalysis, tinta telah diproseksi sebelumnya oleh penganalisis tinta sebelum dikirim ke pengenal. Tinta yang dianalisis diubah menjadi horizontal sebelum dikenali, meningkatkan hasil pengenalan.

Manfaat lain untuk pengenalan diperoleh dengan meminta penganalisis tinta mengoreksi informasi urutan stroke yang salah sebelum mengirim tinta ke pengenal. Selanjutnya, hasil pengenalan sekarang tersedia secara selektif. Artinya, pengembang dapat dengan cepat mengambil hasil pengenalan untuk satu kata, baris, atau paragraf dalam satu panggilan.

Klasifikasi Tinta

Tentu saja ada berbagai skenario di mana Anda dapat menjaga data tinta tetap utuh, daripada mengonversinya segera ke teks. Analisis tinta juga memberikan manfaat di sini. Secara khusus, API InkAnalysis menyediakan kemampuan untuk membagi goresan tinta sesuai dengan apakah mereka menulis atau menggambar. Goresan tinta yang diklasifikasikan sebagai penulisan adalah yang membentuk kata atau karakter. Semua goresan lainnya adalah gambar. Ini memberi Anda cara baru untuk mengakses data tinta, memungkinkan skenario pengguna baru. Misalnya, Anda dapat menerapkan pilihan sehingga berbeda berdasarkan jenis goresan mana yang diketukan pengguna; jika pengguna mengetuk goresan tulisan, aplikasi memilih seluruh set goresan yang menyusun kata, jika pengguna mengetuk stoke gambar, aplikasi hanya memilih goresan itu.

Analisis Tata Letak

Analisis tata letak yang berguna sebenarnya jauh melampaui perincian tinta yang relatif sederhana menjadi komponen tulis dan gambar.

Analisis tinta juga mencakup perincian yang lebih kaya dari goresan tulis dan gambar. Sebagai contoh yang sangat sederhana, ambil blob tinta seperti yang ditunjukkan dalam ilustrasi berikut.

dua baris tulisan tangan sederhana

Setelah platform menganalisis goresan ini, platform mengembalikan representasi pohon dari goresan ini seperti yang ditunjukkan dalam ilustrasi berikut. Untuk kasus sederhana ini, pohon hanya berisi informasi paragraf, garis, dan kata, tetapi kekayaan pohon ini meningkat seiring meningkatnya kompleksitas dokumen tinta.

representasi pohon dari akar, paragraf, baris, dan kata

Karena informasi ini sekarang dipisahkan menjadi unit yang dapat dikelola, Anda sekarang dapat membuat fitur yang lebih kuat. Sebagai contoh, aplikasi dapat memperluas fitur di mana pengguna mengetuk untuk memilih kata ke dalam fitur di mana pengguna mengetuk sekali untuk memilih kata, mengetuk dua kali untuk memilih seluruh baris, dan mengetuk tiga kali untuk memilih seluruh paragraf. Dengan memanfaatkan struktur pohon yang dikembalikan oleh operasi analisis, aplikasi dapat menghubungkan area yang diketuk kembali ke stroke di pohon. Setelah aplikasi menemukan stroke, ia dapat berjalan ke atas pohon untuk menentukan bagaimana dan goresan tetangga mana yang harus dipilih.

Memilih seluruh baris adalah contoh sederhana dari manfaat analisis tinta, tetapi kemungkinannya menjadi besar ketika seseorang mempertimbangkan berbagai jenis struktur hierarkis yang mampu dideteksi oleh penganalisis tinta:

  • Daftar yang diurutkan dan tidak berurutan
  • Bentuk
  • Komentar anotasi yang ditulis sebaris dengan teks

Jenis fitur bervariasi dari aplikasi ke aplikasi dan didasarkan pada persyaratan dan mesin analisis dan pengenalan tinta yang tersedia.

Fitur Analisis Tinta Utama

Kemampuan utama API InkAnalysis mencakup fitur-fitur berikut:

  • Analisis Inkremental
  • Persistensi
  • Proksi Data
  • Rekonsiliasi
  • Ekstensibilitas

Analisis Inkremental

Ketika pengguna akhir bekerja dengan tinta, mereka biasanya memperlakukannya seperti tulisan tangan. Tinta terus tunduk pada operasi pengeditan seperti penambahan tinta baru, penghapusan tinta yang ada, dan modifikasi properti tinta, semuanya dilakukan dengan cara yang sama seperti tulisan tangan terus diedit. Operasi pengeditan ini memengaruhi hasil analisis. Ketika pengeditan terjadi, mereka biasanya dapat diisolasi ke bagian dokumen pada titik waktu tertentu. Misalnya, asumsikan pengguna menulis lima baris tinta. Cara standar aplikasi menganalisis tinta adalah menunggu sampai pengguna selesai menulis kelima baris tinta—paragraf, misalnya—lalu menganalisis hasilnya, baik secara sinkron maupun asinkron.

Anda dapat mengoptimalkan waktu keseluruhan yang dihabiskan untuk menganalisis lima baris ini dengan mengisolasi area yang dianalisis saat ditulis, dan kemudian hanya menganalisis kembali bagian hasil yang telah berubah. Setelah baris pertama dianalisis, baris tersebut tidak akan pernah dikenali lagi kecuali dimodifikasi oleh pengguna akhir. Pengenalan baris kedua diperlakukan sebagai operasi pengenalan independen.

Pendekatan inkremental ini bekerja dengan baik di tingkat garis untuk operasi pengenalan, tetapi perlu bekerja pada tingkat yang lebih tinggi untuk operasi analisis tinta. Karena penganalisis tinta dapat mendeteksi klasifikasi tingkat yang lebih tinggi yang berbeda untuk lima baris tinta ini (misalnya, itu bisa menjadi paragraf standar atau lima item dalam daftar), pendekatan bertambah bertahap untuk penganalisis tinta adalah bahwa ia harus menganalisis struktur yang lebih tinggi ini. Artinya, setelah penganalisis tinta mengklasifikasikan baris pertama tinta sebagai garis, ia memeriksa kembali bahwa itu masih merupakan garis ketika mengklasifikasikan baris kedua. Namun, penganalisis tinta mengisolasi pemeriksaan ganda ini ke paragraf dan mengabaikan paragraf pertama saat menganalisis paragraf kedua, memperlakukan paragraf kedua sebagai operasi penganalisis tinta independen. Pendekatan inkremental untuk analisis ini secara dramatis menghemat waktu pemrosesan ketika sejumlah besar tinta sudah ada dalam aplikasi.

Persistensi

Analisis inkremental bekerja dengan baik dalam sesi atau instans tertentu dari objek InkAnalyzer . Namun, API Platform PC Tablet generasi pertama tidak dapat melakukan analisis inkremental setelah tinta dipertahankan ke disk. API InkAnalysis memungkinkan penyimpanan tinta ke disk bersama dengan bentuk hasil analisis yang bertahan. Hasil analisis dapat dimuat ketika tinta dimuat dan dapat disuntikkan ke dalam instans baru InkAnalyzer. Instans baru objek InkAnalyzer kemudian memiliki hasil yang sama yang menyatakannya sebelumnya dan sekarang dapat menerima modifikasi apa pun sebagai perubahan inkremental pada status yang ada, daripada menganalisis semuanya lagi.

Proksi Data

Banyak aplikasi sudah memiliki semacam struktur dokumen yang ada dalam aplikasi mereka; misalnya, grafik atau database. InkAnalyzer juga menyajikan hasil dalam bentuk terstruktur, di pohon objek ContextNode. Struktur InkAnalyzer dan struktur aplikasi yang ada perlu beroperasi dalam dua arah: hasil ditarik dari InkAnalyzer ke dalam aplikasi dan status didorong dari aplikasi ke inkAnalyzer.

Jika menarik hasil dari InkAnalyzer ke dalam struktur aplikasi adalah semua yang diperlukan, itu akan relatif sederhana. Aplikasi akan melakukan iterasi melalui pohon hasil dan menyalin (mengintegrasikan) semua bagian hasil yang mereka butuhkan ke dalam struktur data yang ada. Namun, karena banyak aplikasi horizontal membutuhkan analisis inkremental dan persistensi pada disk, masalahnya menjadi dua arah. Status (hasil sebelumnya) perlu ditarik dari struktur aplikasi dan didorong ke InkAnalyzer.

Untuk memenuhi persyaratan ini, InkAnalyzer berisi serangkaian peristiwa yang dimunculkannya pada waktu yang tepat selama operasi analisis untuk memungkinkan aplikasi memproksi permintaan data kembali ke struktur yang ada. Peristiwa ini hanya dinaikkan untuk objek ContextNode yang diperlukan oleh operasi inkremental.

Rekonsiliasi

Sebagian besar aplikasi akan ingin menganalisis tinta di latar belakang untuk menjaga gangguan antarmuka pengguna tetap minimum. Namun, menganalisis tinta di latar belakang menyebabkan masalah, jika pengguna mengubah tinta (atau tinta tetangga) yang sedang dianalisis. Misalnya, jika pengguna menghapus tinta selama operasi latar belakang, struktur yang dihasilkan akan mencerminkan status dokumen ketika operasi latar belakang dimulai, bukan ketika selesai.

Untuk membantu aplikasi, InkAnalyzer mendamaikan perbedaan status dokumen antara awal dan akhir operasi analisis. Perubahan yang dilakukan oleh pengguna atau aplikasi saat analisis berjalan di latar belakang selalu menimpa hasil yang dihitung di latar belakang. Setelah rekonsiliasi, hanya bagian dari struktur hasil yang tidak bertentangan dengan perubahan dokumen yang dilaporkan, dan goresan yang bertentangan ditandai untuk analisis di masa mendatang. Lain kali operasi analisis latar belakang dijalankan, hasilnya dihitung ulang berdasarkan status baru.

Diagram berikut menunjukkan proses ini. Waktu dinyatakan secara linear dari atas ke bawah dalam diagram.

proses untuk menyesuaikan perubahan status dokumen selama operasi analisis

  1. Pada saat 1 (t1), aplikasi mengumpulkan tinta dari pengguna akhir, termasuk segala jenis modifikasi tinta, seperti menambahkan, menghapus, atau memodifikasi.
  2. Pada t2, aplikasi memanggil operasi analisis latar belakang. InkAnalyzer menentukan tinta apa yang tidak memiliki hasil dan tinta apa yang perlu diperiksa ulang. Ini menyalin data tinta yang diperlukan untuk memungkinkan utas latar belakang dijalankan secara independen.
  3. Pada t3, InkAnalyzer mengembalikan eksekusi utas antarmuka pengguna ke aplikasi. InkAnalyzer membuat utas kedua, utas analisis latar belakang, dan analisis tinta dan mesin pengenalan menganalisis data tinta yang disalin.
  4. Saat operasi analisis terjadi pada utas latar belakang kedua, pengguna akhir terus mengedit dokumen, menambahkan dan menghapus data stroke, pada t4 dan t5. Pengeditan ini dapat berkonflik dengan pekerjaan yang sedang diproses di latar belakang.
  5. Pada t6, utas latar belakang telah menyelesaikan operasi analisis, dan hasilnya siap. Sebelum InkAnalyzer mengomunikasikan hasilnya ke aplikasi, inkAnalyzer menjalankan algoritma rekonsiliasi untuk menentukan apakah pengeditan pengguna dilakukan saat operasi analisis sedang dihitung (t4 dan t5) berkonflik dengan hasilnya. Jika ada tabrakan yang terdeteksi, goresan bertabrakan ditandai untuk analisis ulang, yang terjadi saat aplikasi memanggil operasi analisis latar belakang.
  6. Akhirnya, pada t7, dengan semua tabrakan terdeteksi, InkAnalyzer menyajikan hasilnya ke aplikasi.

Ekstensibilitas

API InkAnalysis memungkinkan jenis mesin analisis baru untuk digunakan oleh aplikasi, sed sehingga mencegah aplikasi harus menulis ulang semua manfaat API InkAnalysis, termasuk rekonsiliasi, proksi data, persistensi, dan analisis bertambah bertahap.

Microsoft.Ink

Referensi Analisis Tinta