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/.

Podobne dokumenty