Udostępnij przez


Omówienie analizy atramentu

Interfejsy API InkAnalysis zapewniają deweloperom komputerów typu Tablet PC zaawansowane narzędzia do programowej analizy danych wejściowych tuszu. Interfejs API klasyfikuje atrament do znaczących kategorii, takich jak słowa, wiersze, akapity i rysunki.

Każdą klasyfikację można używać na różne sposoby, w tym poprawianie wyników rozpoznawania pisma ręcznego.

Podstawy analizy atramentu

W tej sekcji przedstawiono technologię analizy pisma oddyskowego platformy tabletów i wyjaśniono, kiedy i jak z niej korzystać.

Interfejsy API InkAnalysis skutecznie łączą dwie odrębne, ale komplementarne technologie: rozpoznawanie pisma ręcznego i klasyfikację układu. Połączenie tych dwóch technologii daje definitywnie większe wyniki niż same części.

Rozpoznawanie pisma ręcznego to analiza obliczeniowa cyfrowego pisma odręcznego w celu uzyskania interpretacji znakowej w danym języku. Oznacza to, że rozpoznawanie pisma ręcznego polega na tym, jak komputer "odczytuje" pismo ręczne osoby.

Analiza tuszu można dodatkowo podzielić na klasyfikację tuszu i analizę układu. Klasyfikacja pisma odręcznego to obliczeniowy podział pisma odręcznego na semantycznie znaczące jednostki, takie jak akapity, wiersze, wyrazy i rysunki. Analiza układu to badanie obliczeniowe danych wejściowych dotyczących tuszu w celu określenia położenia tuszu na powierzchni do pisania oraz tego, jak pociągnięcia odnoszą się do siebie przestrzennie oraz semantycznie. Na przykład analiza układu może powiedzieć, że określony fragment tuszu jest adnotacją lub wyróżnieniem.

Uznanie

Przykładem tego, jak połączenie rozpoznawania z analizą pisma odręcznego w interfejsie API InkAnalysis pomaga deweloperowi w poprawie wyników analizy. Aparaty rozpoznawania pisma ręcznego na tablecie zostały zaprojektowane głównie w celu rozpoznawania pojedynczej linii pisma ręcznego. Jednak osoby zwykle piszą wiele wierszy podczas tworzenia notatek, a te wiersze nie mają gwarancji, że są poziome w odniesieniu do strony. Za pomocą interfejsu API InkAnalysis atrament jest wstępnie przetwarzany przez analizator przed wysłaniem do modułu rozpoznawania. Przeanalizowany atrament jest przekształcany na poziomą orientację przed rozpoznaniem, co poprawia wyniki rozpoznawania.

Dzięki temu, że analizator atramentu poprawia niepoprawne informacje o kolejności pociągnięć przed wysłaniem atramentu do rozpoznawania, uzyskuje się inne korzyści z rozpoznawania. Ponadto wyniki rozpoznawania są teraz dostępne w sposób selektywny. Oznacza to, że deweloper może szybko pobrać wyniki rozpoznawania pojedynczego słowa, wiersza lub akapitu w jednym wywołaniu.

Klasyfikacja tuszu

Istnieją oczywiście różne scenariusze, w których możesz zachować dane tuszu nienaruszone, zamiast konwertować je natychmiast na tekst. Analiza atramentu zapewnia tutaj również korzyści. W szczególności interfejsy API InkAnalysis umożliwiają rozdzielanie pociągnięć atramentu w zależności od tego, czy są to pismo, czy rysunki. Pociągnięcia atramentem sklasyfikowane jako pisanie to te, które tworzą słowo lub znaki. Wszystkie inne kreski to rysunki. Zapewnia to nowy sposób uzyskiwania dostępu do danych atramentu, umożliwiając nowe scenariusze użytkownika. Można na przykład zaimplementować wybór, tak aby różnił się w zależności od typu pociągnięcia, na które dotknie użytkownik; jeśli użytkownik dotknie pociągnięcia pisania, aplikacja wybierze cały zestaw pociągnięć, które tworzą wyraz, jeśli użytkownik dotknie pociągnięcia rysunku, aplikacja wybierze tylko to pociągnięcie.

Analiza układu

Przydatna analiza układu wykracza daleko poza stosunkowo prosty podział tuszu na składniki pisma i rysunku.

Analiza atramentu obejmuje również bogatszy podział pociągnięć pisma i rysunkowych. Jako bardzo prosty przykład weź plamę atramentu, jak pokazano na poniższej ilustracji.

dwóch prostych wierszy pisma ręcznego

Po przeanalizowaniu tych pociągnięć platforma zwraca reprezentację drzewa tych pociągnięć, jak pokazano na poniższej ilustracji. W tym prostym przypadku drzewo zawiera tylko informacje o akapitach, wierszach i słowach, ale bogactwo tego drzewa zwiększa się wraz ze wzrostem złożoności dokumentu pisma odkowego.

reprezentacja drzewa z korzeniem, akapitów, wierszy i wyrazów

Ponieważ te informacje są teraz oddzielone od jednostek możliwych do zarządzania, można teraz tworzyć bardziej zaawansowane funkcje. Na przykład aplikacja może rozszerzyć funkcję, w której użytkownik naciska, aby wybrać słowo w funkcji, w której użytkownik naciska raz, aby wybrać wyraz, naciska dwa razy, aby zaznaczyć cały wiersz, i naciska trzy razy, aby wybrać cały akapit. Korzystając ze struktury drzewa zwróconej przez operację analizy, aplikacja może powiązać zamapowany obszar z powrotem z pociągnięciem w drzewie. Po znalezieniu pociągnięcia aplikacja może przejść w górę drzewa, aby określić, jak i które sąsiednie pociągnięcia wybrać.

Wybór całej linii jest uproszczonym przykładem korzyści z analizy pisma odręcznego, ale możliwości stają się doskonałe, gdy uważa się, że różne typy struktur hierarchicznych analizator pisma odręcznego jest w stanie wykrywać:

  • Listy uporządkowane i nieurządkowane
  • Kształty
  • Komentarze adnotacyjne umieszczone bezpośrednio w tekście

Typy funkcji różnią się w zależności od aplikacji i są oparte na wymaganiach oraz dostępnych silnikach analizy i rozpoznawania tuszu.

Kluczowe funkcje analizy atramentu

Kluczowe możliwości interfejsu API inkAnalysis obejmują następujące funkcje:

  • Analiza przyrostowa
  • Wytrwałość
  • Proxy danych
  • Pojednanie
  • Rozszerzalność

Analiza przyrostowa

Kiedy użytkownicy końcowi pracują z pisaniem odręcznym, zwykle traktują to jak pisanie odręczne. Atrament jest stale poddawany operacjom edycji, takim jak dodawanie nowego atramentu, usuwanie istniejącego atramentu i modyfikacja właściwości atramentu, wszystko to odbywa się w taki sam sposób, w jaki stale edytuje się pismo ręczne. Te operacje edycji wpływają na wyniki analizy. W przypadku edycji zazwyczaj można je odizolować do sekcji dokumentu w określonych punktach w czasie. Załóżmy na przykład, że użytkownik pisze pięć linijek tuszem. Standardowym sposobem, w jaki aplikacje analizują pismo odręczne, jest oczekiwanie, aż użytkownik zakończy pisanie wszystkich pięciu wierszy pisma odręcznego — na przykład akapitu — a następnie analizowania wyników — synchronicznie lub asynchronicznie.

Możesz zoptymalizować ogólny czas spędzony na analizowaniu tych pięciu wierszy przez izolowanie obszarów analizowanych podczas ich zapisywania, a następnie ponowne analizowanie tylko części wyników, które uległy zmianie. Po przeanalizowaniu pierwszego wiersza nigdy nie zostanie rozpoznany ponownie, chyba że zostanie zmodyfikowany przez użytkownika końcowego. Rozpoznawanie drugiego wiersza jest traktowane jako niezależna operacja rozpoznawania.

Takie podejście przyrostowe działa dobrze na poziomie linii w operacjach rozpoznawania, ale musi działać na wyższym poziomie dla operacji analizy tuszu. Ponieważ analizator pisma odręcznego może wykrywać różne klasyfikacje wyższego poziomu dla tych pięciu wierszy pisma odręcznego (na przykład może to być standardowy akapit lub pięć elementów na liście), przyrostowe podejście analizatora pisma odręcznego polega na analizie tych wyższych struktur. Oznacza to, że gdy analizator atramentu klasyfikuje pierwszą linię atramentu jako linię, sprawdza, czy jest nadal linią, gdy klasyfikuje drugi wiersz. Jednak analizator pisma odręcznego izoluje to podwójne sprawdzanie do akapitu i ignoruje pierwszy akapit podczas analizowania drugiego akapitu, traktując drugi akapit jako niezależną operację analizatora pisma odręcznego. To przyrostowe podejście do analizy znacząco redukuje czas przetwarzania w przypadku dużych ilości atramentu już istniejących w aplikacji.

Wytrwałość

Analiza przyrostowa działa dobrze w ramach danej sesji lub wystąpienia obiektu InkAnalyzer. Jednak interfejsy API platformy tabletu pierwszej generacji nie mogą wykonywać analizy przyrostowej po utrwaleniu pisma odręcznego na dysku. Interfejs API InkAnalysis umożliwia zapisywanie atramentu na dysku wraz z utrwaloną formą wyników analizy. Wyniki analizy można załadować, gdy tusz zostanie załadowany i można je wprowadzić do nowej instancji InkAnalyzer. Nowe wystąpienie obiektu InkAnalyzer następnie ma ten sam stan wyników, który miał wcześniej i może teraz zaakceptować wszelkie modyfikacje jako zmiany przyrostowe w istniejącym stanie, zamiast analizować wszystko ponownie.

Proxy danych

Wiele aplikacji ma już jakąś istniejącą strukturę dokumentów w swoich aplikacjach; na przykład graf lub baza danych. InkAnalyzer przedstawia również wyniki w postaci ustrukturyzowanej w drzewie obiektów ContextNode. Struktura InkAnalyzer oraz istniejąca struktura aplikacji muszą współdziałać w dwóch kierunkach: wyniki są pobierane z InkAnalyzer do aplikacji i stan jest wypychany z aplikacji do InkAnalyzer.

Jeśli ściągnięcie wyników z InkAnalyzer do struktury aplikacji byłoby wszystkim, co byłoby potrzebne, byłoby to stosunkowo proste. Aplikacje przechodzą przez drzewo wyników i przenoszą wszystkie niezbędne elementy wyników do swojej istniejącej struktury danych. Jednak ze względu na to, że wiele aplikacji poziomych wymaga analizy przyrostowej i trwałości dysku, problem staje się dwukierunkowy. Stan (wcześniejsze wyniki) musi zostać pobrany ze struktury aplikacji i przekazany do InkAnalyzer.

Aby spełnić to wymaganie, InkAnalyzer zawiera serię zdarzeń zgłaszanych w odpowiednim czasie podczas operacji analizy, aby umożliwić aplikacjom przekierowanie żądania danych z powrotem do ich istniejących struktur. Te zdarzenia są wywoływane tylko dla obiektów ContextNode wymaganych przez operację przyrostową.

Pojednanie

Większość aplikacji będzie chciała analizować atrament w tle, aby zachować minimalne przerwy w interfejsie użytkownika. Analiza atramentu w tle powoduje problemy, jednak jeśli użytkownik zmieni atrament (lub sąsiedni atrament), który jest analizowany. Jeśli na przykład użytkownik usunie atrament podczas operacji w tle, wynikowa struktura będzie odzwierciedlać stan dokumentu po uruchomieniu operacji w tle, a nie po jej zakończeniu.

Aby pomóc aplikacjom, InkAnalyzer uzgadnia różnice w stanie dokumentu między rozpoczęciem i końcem operacji analizy. Zmiany wprowadzone przez użytkownika lub aplikację, gdy analiza jest uruchomiona w tle, zawsze zastępują wyniki obliczane w tle. Po uzgodnieniu zgłaszane są tylko części struktury wyników, które nie powodują konfliktu ze zmianami dokumentów, a konfliktujące fragmenty są oznaczane do przyszłej analizy. Przy następnym uruchomieniu operacji analizy w tle wyniki są ponownie obliczane na podstawie nowego stanu.

Na poniższym diagramie przedstawiono ten proces. Czas jest wyrażony liniowo od góry do dołu na diagramie.

proces uzgadniania zmian stanu dokumentu podczas operacji analizy

  1. W czasie 1 (t1) aplikacja zbiera atrament od użytkownika końcowego, w tym wszelkiego rodzaju modyfikacje pisma oddyskowego, takie jak dodawanie, usuwanie lub modyfikowanie.
  2. W t2 aplikacja wywołuje operację analizy w tle. InkAnalyzer określa, który atrament nie daje wyników i który atrament należy sprawdzić ponownie. Kopiuje wymagane dane atramentu, aby umożliwić niezależne działanie wątku w tle.
  3. W momencie t3 InkAnalyzer przywraca wykonywanie wątku interfejsu użytkownika do aplikacji. InkAnalyzer tworzy drugi wątek, wątek analizy w tle, a silniki analizy pisma odręcznego i rozpoznawania analizują skopiowane dane.
  4. Podczas gdy operacja analizy występuje w drugim wątku w tle, użytkownik końcowy kontynuuje edycję dokumentu, dodawanie i usuwanie danych pociągnięcia przy t4 i t5. Te zmiany mogą powodować konflikt z pracą przetwarzaną w tle.
  5. W momencie t6 wątek w tle zakończył operację analizy, a wyniki są gotowe. Zanim InkAnalyzer przekaże wyniki do aplikacji, uruchamia algorytm rekoncyliacji w celu ustalenia, czy zmiany wprowadzone przez użytkownika w trakcie obliczania operacji analizy (t4 i t5) powodują konflikt z wynikami. Jeśli zostaną wykryte jakiekolwiek kolizje, zderzające się pociągnięcia są oznaczane do ponownej analizy, co następuje przy następnym wywołaniu operacji analizy w tle.
  6. Na koniec, w t7, ze wszystkimi wykrytymi kolizjami, InkAnalyzer przedstawia wyniki aplikacji.

Rozszerzalność

Interfejsy API InkAnalysis pozwalają aplikacjom korzystać z nowych typów aparatów analizy, eliminując konieczność ponownego wdrażania wszystkich korzyści płynących z interfejsu API InkAnalysis, takich jak uzgadnianie, proxy danych, trwałość i analiza przyrostowa.

Microsoft.Ink

dokument referencyjny analizy atramentu