Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Text i Amazon Polly

Na konferencji AWS re:Invent 2021 w Las Vegas pokazaliśmy Przeczytaj dla mnie na AWS Builders Fair – stronie internetowej, która pomaga niedowidzącym słyszeć dokumenty.

Aby uzyskać lepszą jakość, obejrzyj wideo tutaj.

Technologia adaptacyjna i funkcje ułatwień dostępu są często drogie, jeśli w ogóle są dostępne. Książki audio ułatwiają czytanie osobom niedowidzącym. Audiodeskrypcja sprawia, że ​​filmy są dostępne. Ale co zrobić, gdy treść nie jest jeszcze zdigitalizowana?

Ten post koncentruje się na usługach AWS AI Ekstrakt z amazonki i Amazon Polly, które wzmacniają osoby z zaburzeniami widzenia. Read For Me został opracowany wspólnie przez Jacka Marchetti, który jest niedowidzący.

Omówienie rozwiązania

Dzięki opartej na zdarzeniach, bezserwerowej architekturze i połączeniu wielu usług AI możemy tworzyć naturalnie brzmiące pliki audio w wielu językach z obrazu dokumentu lub dowolnego obrazu z tekstem. Na przykład list z IRS, kartka świąteczna od rodziny, a nawet tytuły otwierające film.

Poniższy Architektura referencyjna, opublikowane w Centrum Architektury AWS przedstawia przepływ pracy użytkownika wykonującego zdjęcie telefonem i odtwarzającego plik MP3 z treścią znalezioną w tym dokumencie.

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Przepływ pracy obejmuje następujące kroki:

  1. Treść statyczna (HTML, CSS, JavaScript) jest hostowana na Wzmocnienie AWS.
  2. Tymczasowy dostęp jest przyznawany anonimowym użytkownikom do usług zaplecza za pośrednictwem Amazon Cognito pula tożsamości.
  3. Pliki obrazów są przechowywane w Usługa Amazon Simple Storage (Amazonka S3).
  4. Użytkownik wysyła żądanie POST przez Brama Amazon API do usługi audio, która pośredniczy w ekspresie Funkcje kroków AWS workflow.
  5. Przepływ pracy Funkcje kroków obejmuje następujące kroki:
    1. Ekstrakt z amazonki wyodrębnia tekst z obrazu.
    2. Amazon Comprehend wykrywa język tekstu.
    3. Jeśli język docelowy różni się od wykrytego języka, Tłumacz Amazon tłumaczy na język docelowy.
    4. Amazon Polly tworzy plik audio jako wyjście przy użyciu tekstu.
  6. Obieg pracy AWS Step Functions tworzy plik audio jako wyjście i przechowuje go w Amazon S3 w formacie MP3.
  7. Wstępnie podpisany adres URL z lokalizacją pliku audio przechowywanego w Amazon S3 jest wysyłany z powrotem do przeglądarki użytkownika przez API Gateway. Urządzenie mobilne użytkownika odtwarza plik audio przy użyciu wstępnie podpisanego adresu URL.

W poniższych sekcjach omówimy powody, dla których wybraliśmy określone usługi, wzorzec architektury i funkcje usług dla tego rozwiązania.

Usługi AWS AI

Kilka usług AI jest połączonych ze sobą w celu zasilania funkcji Read For Me:

  • Amazon Text identyfikuje tekst w przesłanym obrazie.
  • Amazon Comprehend określa język.
  • Jeśli użytkownik wybierze inny język mówiony niż język na zdjęciu, przetłumaczymy go za pomocą Tłumacza Amazon.
  • Amazon Polly tworzy plik MP3. Korzystamy z silnika neuronowego Amazon Polly, który tworzy bardziej naturalne, realistyczne nagranie dźwięku.

Jedną z głównych korzyści płynących z korzystania z tych usług AI jest łatwość wdrożenia przy niewielkim lub zerowym podstawowym doświadczeniu w uczeniu maszynowym. Usługi udostępniają interfejsy API, które klienci mogą wywoływać za pomocą zestawów SDK udostępnianych w wielu językach programowania, takich jak Python i Java.

W Read For Me napisaliśmy podstawowe informacje AWS Lambda funkcje w Pythonie.

AWS SDK dla Pythona (Boto3)

Połączenia AWS SDK dla Pythona (Boto3) ułatwia interakcję z usługami AWS. Na przykład następujące wiersze kodu Pythona zwracają tekst znaleziony w obrazie lub dokumencie, który udostępniasz:

import boto3
client = boto3.client('textract')
response = client.detect_document_text(
Document={ 'S3Object': { 'Bucket': 'bucket-name', 'Name': 's3-key'
}
})
#do something with the response

Cały kod Pythona jest uruchamiany w ramach poszczególnych funkcji Lambda. Nie trzeba udostępniać serwerów ani utrzymywać infrastruktury.

Wzory architektoniczne

W tej sekcji omówimy różne wzorce architektury używane w rozwiązaniu.

Bezserwerowe

Wdrożyliśmy architekturę bezserwerową z dwóch głównych powodów: szybkości budowy i kosztów. Bez podstawowego sprzętu do utrzymania lub infrastruktury do wdrożenia, skupiliśmy się wyłącznie na kodzie logiki biznesowej i niczym więcej. To pozwoliło nam na uruchomienie i uruchomienie działającego prototypu w ciągu kilku dni. Jeśli użytkownicy nie przesyłają aktywnie zdjęć i nie słuchają nagrań, nic nie działa, a zatem nic nie generuje kosztów poza miejscem na dane. Reguła zarządzania cyklem życia S3 usuwa przesłane obrazy i pliki MP3 po 1 dniu, dzięki czemu koszty przechowywania są niskie.

Synchroniczny przepływ pracy

Podczas kompilowania przepływów pracy bezserwerowych ważne jest, aby zrozumieć, kiedy wywołanie synchroniczne ma więcej sensu na podstawie architektury i środowiska użytkownika niż proces asynchroniczny. W przypadku Read For Me początkowo zeszliśmy na ścieżkę asynchroniczną i planowaliśmy używać WebSockets do dwukierunkowej komunikacji z frontendem. Nasz przepływ pracy obejmowałby krok, aby znaleźć identyfikator połączenia powiązany z przepływem pracy funkcji krokowych, a po zakończeniu powiadomić interfejs użytkownika. Aby uzyskać więcej informacji na temat tego procesu, zobacz Od ankiety do push: przekształć interfejsy API za pomocą interfejsów API REST i WebSockets Amazon API Gateway.

Ostatecznie zdecydowaliśmy się tego nie robić i użyliśmy funkcji ekspresowych kroków, które są synchroniczne. Użytkownicy rozumieją, że przetwarzanie obrazu nie będzie natychmiastowe, ale wiedzą też, że nie zajmie to 30 sekund czy minuty. Byliśmy w miejscu, w którym kilka sekund było satysfakcjonujące dla użytkownika końcowego i nie potrzebowaliśmy korzyści z WebSockets. To uprościło ogólny przepływ pracy.

Przepływ pracy w Express Step Functions

Możliwość dzielenia kodu na mniejsze, izolowane funkcje pozwala na precyzyjną kontrolę, łatwiejszą konserwację i możliwość dokładniejszego skalowania. Na przykład, jeśli ustalimy, że funkcja Lambda, która uruchomiła Amazon Polly do utworzenia pliku audio, działała wolniej niż funkcja określająca język, moglibyśmy przeskalować tę funkcję w pionie, dodając więcej pamięci, bez konieczności robienia tego dla pozostałych. Podobnie, ograniczasz promień wybuchu tego, co funkcja Lambda może zrobić lub uzyskać do niej dostęp, gdy ograniczysz jej zasięg i zasięg.

Jedną z zalet aranżacji przepływu pracy za pomocą funkcji kroków jest możliwość wprowadzenia logiki przepływu decyzji bez konieczności pisania kodu.

Nasz przepływ pracy w Step Functions nie jest skomplikowany. Jest liniowy aż do etapu tłumaczenia. Jeśli nie musimy wywoływać funkcji Lambda translacji, jest to dla nas mniej kosztowny, a dla użytkownika szybsze działanie. Możemy użyć projektanta wizualnego w konsoli Step Functions, aby znaleźć określony klucz w ładunku wejściowym i, jeśli jest obecny, wywołać jedną funkcję nad drugą przy użyciu JSONPath. Na przykład nasz ładunek zawiera klucz o nazwie translate:

{ 
extracted_text: "hello world",
target_language: "es",
source_language: "en",
translate: true
}

W projektancie wizualnym Step Functions znajdujemy klucz tłumaczenia i konfigurujemy odpowiednie reguły.

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Architektura bez głowy

Wzmocnij hostuje kod frontonu. Frontend jest napisany w React, a kod źródłowy jest zaewidencjonowany Zatwierdzenie kodu AWS. Amplify rozwiązuje kilka problemów dla użytkowników próbujących wdrażać i zarządzać statycznymi witrynami internetowymi. Jeśli robiłeś to ręcznie (za pomocą zasobnika S3 skonfigurowanego do hostingu statycznej witryny i obsługi tego za pomocą Amazon CloudFront), musiałbyś sam wygasać pamięć podręczną za każdym razem, gdy wykonałeś wdrożenia. Musiałbyś także napisać swój własny potok CI/CD. Amplify obsługuje to za Ciebie.

Pozwala to na architekturę bezgłową, w której kod frontonu jest oddzielony od backendu, a każda warstwa może być zarządzana i skalowana niezależnie od drugiej.

Analizuj identyfikator

W poprzedniej sekcji omówiliśmy wzorce architektury przetwarzania przesłanego obrazu i tworzenia z niego pliku MP3. Przeczytanie dokumentu to świetny pierwszy krok, ale co zrobić, jeśli chcesz tylko dowiedzieć się czegoś konkretnego bez konieczności odczytywania całego tekstu? Na przykład, musisz wypełnić formularz online i podać numer dowodu osobistego lub paszportu, a może jego datę ważności. Następnie musisz zrobić zdjęcie swojego dokumentu tożsamości i po otrzymaniu go z powrotem poczekać na tę konkretną część. Alternatywnie możesz użyć Analizy ID.

Analiza ID to funkcja Amazon Text, która umożliwia wyszukiwanie dokumentów. Przeczytaj dla mnie zawiera menu rozwijane, w którym możesz zapytać o datę ważności, datę wydania lub numer dokumentu. Możesz użyć tego samego przepływu pracy, aby utworzyć plik MP3, który zawiera odpowiedź na Twoje konkretne pytanie.

Możesz zademonstrować funkcję Analizuj ID pod adresem readforme.io/analiza.

Dodatkowe funkcje Polly

  • Read For Me oferuje wiele głosów neuronowych wykorzystujących różne języki i dialekty. Zwróć uwagę, że jest kilka innych głosy do wyboru, którego nie realizowaliśmy. Gdy nowy głos jest dostępny, wystarczy aktualizacja kodu frontonu i funkcja lambda, aby z niego skorzystać.
  • Usługa Polly oferuje również inne opcje, których jeszcze nie uwzględniliśmy w Czytaj dla mnie. Obejmują one dostosowanie szybkość głosów i znaki mowy.

Wnioski

W tym poście omówiliśmy, jak korzystać z wielu usług AWS, w tym AI i bezserwerowych, aby pomóc osobom niedowidzącym. Możesz dowiedzieć się więcej o projekcie Przeczytaj dla mnie i skorzystać z niego odwiedzając readforme.io. Możesz również znaleźć przykłady Amazon Text na GitHub repo. Aby dowiedzieć się więcej o Analiza ID, sprawdź Ogłaszamy wsparcie dla ekstrakcji danych z dokumentów tożsamości za pomocą Amazon Text.

Kod źródłowy dla tego projektu będzie open-source i wkrótce dodany do publicznego GitHub AWS.


O autorach

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Jacka Marchettiego jest architektem Senior Solutions w AWS. Z doświadczeniem w inżynierii oprogramowania Jack koncentruje się przede wszystkim na pomaganiu klientom we wdrażaniu bezserwerowych architektur sterowanych zdarzeniami. Swoją pierwszą rozproszoną aplikację opartą na chmurze zbudował w 2013 roku po wzięciu udziału w drugiej konferencji AWS re:Invent i od tego czasu jest uzależniony. Przed rozpoczęciem pracy w AWS Jack większość swojej kariery spędził w przestrzeni agencji reklamowej, budując doświadczenia dla niektórych z największych marek na świecie. Jack jest prawnie niewidomy i mieszka w Chicago ze swoją żoną Erin i kotem Minou. Jest także scenarzystą i reżyserem, skupiającym się głównie na filmach bożonarodzeniowych i horrorach. Zobacz filmografię Jacka w jego IMDb strona.

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Alaka Eswaradassa jest architektem rozwiązań w AWS z siedzibą w Chicago, Illinois. Jej pasją jest pomaganie klientom w projektowaniu architektur chmurowych wykorzystujących usługi AWS do rozwiązywania problemów biznesowych. Posiada tytuł magistra inżyniera informatyki. Przed dołączeniem do AWS pracowała dla różnych organizacji opieki zdrowotnej i ma dogłębne doświadczenie w projektowaniu złożonych systemów, innowacji technologicznych i badań. W wolnym czasie spędza czas z córkami i eksploruje tereny.

Pozwól osobom niedowidzącym słyszeć dokumenty za pomocą Amazon Textract i Amazon Polly PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Swagat Kulkarni jest starszym architektem rozwiązań w AWS i entuzjastą AI/ML. Pasjonuje go rozwiązywanie rzeczywistych problemów klientów za pomocą natywnych usług w chmurze i uczenia maszynowego. Poza pracą Swagat lubi podróżować, czytać i medytować.

Znak czasu:

Więcej z Uczenie maszynowe AWS