projekt in˙zynierski system tłumacz ˛acy online dla danych obrazowych
Transkrypt
projekt in˙zynierski system tłumacz ˛acy online dla danych obrazowych
Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki P ROJEKT IN ŻYNIERSKI S YSTEM TŁUMACZ ACY ˛ ONLINE DLA DANYCH OBRAZOWYCH W OJCIECH M AZUR , M AURYCY M ICHALSKI O PIEKUN : dr inż. Dominik Radziszowski Kraków 2011 O ŚWIADCZENIE AUTORA PRACY O ŚWIADCZAM , ŚWIADOMY (- A ) ODPOWIEDZIALNO ŚCI KARNEJ ZA PO - ŚWIADCZENIE NIEPRAWDY, ŻE NINIEJSZY PROJEKT WYKONAŁEM (- AM ) OSOBI ŚCIE I SAMODZIELNIE W ZAKRESIE OPISANYM W DALSZEJ CZ E˛ŚCI DOKUMENTU I ŻE NIE KORZYSTAŁEM (- AM ) ZE ŹRÓDEŁ INNYCH NI Ż WYMIENIONE W DALSZEJ CZ E˛ŚCI DOKUMENTU . ................................ PODPIS 3 1. Cel prac i wizja produktu Celem projektu było stworzenie systemu online tłumaczacego ˛ dane obrazowe. System umożliwia rozpoznanie tekstu z przesłanego obrazu, przetłumaczenia go na wybrany inny j˛ezyk oraz przesłania użytkownikowi wynikowego tekstu w innym j˛ezyku. Dla końcowego użytkownika została stworzona aplikacja mobilna na platform˛e Android. Dost˛ep online do usług tłumaczacych ˛ typu „machine translation” jest coraz bardziej powszechny, ich jakość rośnie. Istnieja˛ też biblioteki oraz dost˛epne jako usługi systemy typu OCR rozpoznajace ˛ tekst na przekazywanych danych obrazowych. Połaczenie ˛ obu technologii zaowocowało stworzeniem systemu tłumaczacego ˛ tekst z danych obrazowych. Do czego jest to przydatne? Przykładowo: W lokalnej chińskiej restauracji dostajemy menu (niestety nie maja˛ wersji polskiej ani angielskiej), możemy wyjść lub wyciagn ˛ ać ˛ telefon, zrobić zdj˛ecie i po chwili otrzymujemy zrozumiała˛ dla siebie wersji j˛ezykowej. Potwierdzeniem trafności wyboru tematu jest fakt, że ostatnio pojawiło si˛e na rynku kilka podobnych aplikacji, z których najbardziej znane sa: ˛ Google Goggles oraz Word Lens. Najwi˛ekszymi zagrożeniami dla realizacji projektu były integracja i zapewnienie komunikacji różnych serwisów takich jak rozpoznawanie tekstu z obrazu czy wykonywanie tłumaczenia z nasza˛ aplikacja.˛ Oprócz tego ograniczenia techniczne urzadzeń ˛ mobilnych spowodowały konieczność poszukiwania metod optymalizacji algorytmów użytych w aplikacji. 2. Zakres funkcjonalności Głównym celem realizacji projektu było stworzenie aplikacji komponentowej o architekturze SOA umożliwiajacej ˛ tłumaczenie tekstu znajdujacego ˛ si˛e na zdj˛eciu. Dodatkowo sposób realizacji projektu umożliwił udost˛epnienie strony internetowej, na której można przesłać obrazek do tłumaczenia oraz możliwość przesłania danych do tłumaczenia poprzez web service (protokół SOAP oraz REST). Przypadki użycia - cz˛eść serwerowa: • wyślij obraz do tłumaczenia przez web service • wyślij obraz do tłumaczenia przez stron˛e www Przypadki użycia - aplikacja mobilna: • ustaw parametry obrazu oraz tłumaczenia • zrób zdj˛ecie i wyślij do tłumaczenia • wyślij obraz do tłumaczenia • wyświetl histori˛e tłumaczeń Ze wzgl˛edu na wykorzystanie zewn˛etrznych usług do rozpoznawania tekstu na obrazie oraz tłumaczenia tekstu aplikacja jest zależna od systemów zewn˛etrznych realizujacych ˛ te usługi. Ze wzgl˛edu na komponentowa˛ struktur˛e aplikacji możliwe jest łatwe dodawanie i zamian˛e systemów udost˛epniajacych ˛ wspomniane usługi. 4 3. Wybrane aspekty realizacji Z uwagi na charakterystyk˛e aplikacji, która wymagała integracji wielu zewn˛etrznych usług, przyj˛ete rozwiazanie ˛ musiało być na tyle elastyczne, aby podłaczanie ˛ i zamiana pomi˛edzy różnymi usługami była jak najprostsza. Jako główny szkielet dla aplikacji serwerowej został wybrany Apache Servicemix w wersji 4.3. Opiera si˛e on o technologi˛e OSGI umożliwiajac ˛ a˛ łatwa˛ integracj˛e wielu usług. Jako platforma mobilna został wybrany Android z uwagi na dobre środowisko do tworzenia oprogramowania. Kolejnymi argumentami była jego szybko rosnac ˛ a˛ popularność oraz możliwość bezpośredniego dost˛epu do fizycznych urzadzeń ˛ pracujacych ˛ na tym systemie operacyjnym. Komunikacja pomi˛edzy urzadzeniem ˛ mobilnym a aplikacja˛ serwerowa˛ jest oparta o mechanizm REST. Ponadto serwer udost˛epnia również web service, umożliwiajacy ˛ wywołania ˛ przy pomocy protokołu SOAP. Zasada działania aplikacji jest oparta w głównej mierze na wykorzystaniu gotowych rozwiazań ˛ oferujacych ˛ podstawowe usługi, takich jak: • rozpoznawanie tekstu z obrazu • tłumaczenie tekstu Cz˛eść mobilna projektu ma za zadanie obsług˛e aparatu w celu zrobienia zdj˛ecia fragmentowi tekstu oraz obróbk˛e tego zdj˛ecia, aby zminimalizować jego rozmiar przy równoczesnym zachowaniu odpowiedniej jakości wymaganej przez aplikacj˛e rozpoznawania tekstu. Po wykonaniu zdj˛ecia użytkownik specyfikuje j˛ezyk źródłowy (może być niezdefiniowany - w takim przypadku aplikacja sama spróbuje rozpoznać dany j˛ezyk) oraz j˛ezyk docelowy, na jaki ma być przetłumaczony tekst z obrazka. Nast˛epnym krokiem jest przesłanie zdj˛ecia z parametrami tłumaczenia do aplikacji serwerowej wykorzystujac ˛ mechanizm REST. Po otrzymaniu żada˛ nia przez komponent odpowiedzialny za wystawienie komunikacji przy pomocy mechanizmu REST zgłoszenie jest przekazywane do centralnej cześci aplikacji routera. Jest on odpowiedzialny za wybór usług do rozpoznawania tekstu z obrazu oraz wykonania tłumaczenia. Po wybraniu odpowiednich usług router przekazuje kolejno zdj˛ecie do zczytania tekstu, a nast˛epnie do przeprowadzenia tłumaczenia. Po tych dwóch krokach rezultat jest zwracany użytkownikowi. 4. Organizacja pracy W trakcie prowadzenia projektu został wyodr˛ebniony podział odpowedzialności za rozwój cześci serwerowej i mobilnej. Za cz˛eść serwerowa˛ odpowiedzialny był Wojciech Mazur, natomiast za cz˛eść mobilna˛ Maurycy Michalski. Koordynowanie prac projektowych nie ograniczało si˛e jedynie do funkcji nadzorczej. Każdy członek zespołu zajmował si˛e rozwojem oprogramowania, jego testowaniem (zarówno pisaniem testów jednostkowych czy r˛ecznym wykonywaniu testów funkcjonalnych na prototypach, a na testach wydajnościowych kończac) ˛ oraz tworzeniem dokumentacji w obu cz˛eściach systemu. Jako metodyk˛e prowadzenia projektu wybraliśmy model iteracyjny. Podzieliliśmy list˛e zadań do zrealizowania na cz˛eści do wykonania w poszczególnych iteracjach, zaczynajac ˛ od tych najbardziej krytycznych z punktu widzenia aplikacji. 1. Zapoznanie si˛e z technologiami aplikacji głównej Celem iteracji 1 było zaznajomienie si˛e z technologiami potrzebnymi do zbudowania 5 trzonu aplikacji głównej. Technologie te zostały opisane w dokumentacji technicznej w punkcie Rdzeń aplikacji głównej. W trakcie iteracji powstało kilka niezależnych prototypów dla każdej z technologi, realizujacych ˛ pewne funkcjonalności. Na tym etapie udało si˛e pewne rzeczy zrealizować oraz udowodnić ich wykonalność a także sprawdzić, że pewne rozwiazania ˛ nie moga˛ zostać wdrożone. 2. Integracja głównej aplikacji Iteracja miała za zadanie, na podstawie prototypów lub przy ich wykorzystaniu, stworzenie elementów głównej aplikacji, a nast˛epnie zintegrowanie ich ze soba.˛ Podstawowymi cz˛eściami były: odpowiednio skonfigurowany trzon aplikacji, moduły odpowiedzialne za poszczególne funkcjonalności jak rozpoznawanie tekstu na obrazie czy tłumaczenie tekstu, moduł odpowiedzialny za komunikacj˛e mi˛edzy modułami. 3. Udost˛epnienie aplikacji jako usługi w środowisku rozproszonym W trakcie tej iteracji prace skupiały si˛e na stworzeniu kanałów dost˛epu do aplikacji głównej, które umożliwiałby korzystanie z jej funkcjonalności. Były to: Web Service oraz dost˛ep w technologi REST. Dodatkowo stworzona została prosta strona www korzystajaca ˛ z Web Service’u, zapewniajaca ˛ obsług˛e podstawowej funkcjonalności produktu. Protokół REST został przygotowany z myśla˛ o aplikacji mobilnej. 4. Prosta aplikacja mobilna na platform˛e Android Prace nad aplikacja˛ mobilna˛ obejmowały stworzenie prostego prototypu o ograniczonej funkcjonalności. Na tym etapie zostały również sprawdzone możliwości aplikacji pod kilkoma wzgl˛edami metoda˛ prototypowania. Efektem prac była prosty program, który komunikował si˛e z główna aplikacja.˛ 5. Rozwój i dopracowanie aplikacji mobilnej W trakcie tej fazy prace dotyczyły rozwoju funkcjonalności aplikacji i dopracowaniem jej działania. Prace te przebiegały w modelu przyrostowym. Efektem pracy była finalna wersja aplikacji mobilnej w pełni skomunikowanej z główna aplikacja.˛ 6. Testy i poprawki aplikacji głównej i mobilnej Zakres prac w tej iteracji obejmował zarówno podstawowe testy funkcjonalne i pokryciowe, majace ˛ sprawdzić realizacje założeń funkcjonalnych czy wykryć niepoprawne zachowanie aplikacji w różnych sytuacjach, jak i zaawansowane testy wydajnościowe. Testom poddana została również komunikacja mi˛edzy platforma˛ mobilna˛ a główna˛ aplikacja.˛ 7. Stworzenie kompletnej dokumentacji Iteracja ta miała na celu stworzenie kompletnej dokumentacji - zarówno technicznej, procesowej jak i dokumentacji użytkownika. Wykorzystane do tego zostały materiały i dokumenty tworzone na bieżaco ˛ w trakcie powstawania produktu. W trakcie prowadzenia projektu korzystaliśmy z systemu do kordynowania prac projektowych Trac, w którym mi˛edzy innymi rozdzielaliśmy prace do wykonania. Jako system kontroli wersji został użyty SVN. 6 5. Wyniki projektu Jako wynik prac projektowych powstała aplikacja realizujaca ˛ zakładane funkcjonalności. Oprócz tego została stworzona dokumentacja techniczna zawierajaca ˛ techniczne aspekty aplikacji, wykorzystanych technologii i testów pokazujacych ˛ jej wydajność. Dla klienta została również opracowana dokumentacja użytkownika zawierajaca ˛ zrzuty ekranu aplikacji dla łatwiejszego przedstawienia możliwości aplikacji. Weryfikacja użyteczności aplikacji została wykonana przez klienta w trakcie testów na fizycznym urzadzeniu. ˛ Ocena użyteczności jest wysoka. Do interesujacych ˛ aspektów możliwego rozwoju systemu należy zaliczyć mi˛edzy innymi: zwi˛ekszenie dokładności rozpoznawania tekstu na obrazie, wyodr˛ebnianie spójnych fragmentów tekstu czy dynamiczne zast˛epowanie oryginalnego tekstu tym przetłumaczonym. Materiały źródłowe [1] Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage OSGI in Action - Creating Modular Applications in Java. Manning, 2010. [2] Binildas C. A. Service Oriented Java Business Integration - Enterprise Service Bus integration solutions for Java developers. Packt Publishing Ltd., March 2008. [3] Kent Ka Iok Tong. Developing Web Services with Apache CXF and Axis2. TipTec Development, Third edition January 2010. [4] Reto Meier. Professional Android 2 Application Development. Wiley Publishing, Inc., 2010. [5] Fuse ESB - based on Apache ServiceMix http://fusesource.com/products/enterpriseservicemix/. [6] Adrian Trenaman technical blog http://trenaman.blogspot.com/.