Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly

Pada konferensi AWS re:Invent 2021 di Las Vegas, kami mendemonstrasikan Baca Untuk Saya di AWS Builders Fair—situs web yang membantu penyandang tunanetra mendengar dokumen.

Untuk kualitas yang lebih baik, lihat videonya di sini.

Teknologi adaptif dan fitur aksesibilitas seringkali mahal, jika tersedia sama sekali. Buku audio membantu tunanetra membaca. Deskripsi audio membuat film dapat diakses. Tapi apa yang Anda lakukan ketika konten belum didigitalkan?

Postingan ini berfokus pada layanan AI AWS Teks Amazon dan Amazon Polly, yang memberdayakan mereka yang memiliki gangguan penglihatan. Read For Me dikembangkan bersama oleh Jack Marchetti, yang memiliki gangguan penglihatan.

Ikhtisar solusi

Melalui arsitektur tanpa server yang digerakkan oleh peristiwa dan kombinasi beberapa layanan AI, kami dapat membuat file audio yang terdengar alami dalam berbagai bahasa dari gambar dokumen, atau gambar apa pun dengan teks. Misalnya, surat dari IRS, kartu liburan dari keluarga, atau bahkan judul pembuka sebuah film.

Berikut ini Arsitektur Referensi, diterbitkan di Pusat Arsitektur AWS menunjukkan alur kerja pengguna yang mengambil gambar dengan telepon mereka dan memutar MP3 dari konten yang ditemukan dalam dokumen itu.

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Alur kerja meliputi langkah-langkah berikut:

  1. Konten statis (HTML, CSS, JavaScript) dihosting di Amplifikasi AWS.
  2. Akses sementara diberikan kepada pengguna anonim ke layanan backend melalui an Amazon Kognito kolam identitas.
  3. File gambar disimpan di Layanan Penyimpanan Sederhana Amazon (Amazon S3).
  4. Seorang pengguna membuat permintaan POST melalui Gerbang API Amazon ke layanan audio, yang mewakili ekspres Fungsi Langkah AWS alur kerja.
  5. Alur kerja Step Functions mencakup langkah-langkah berikut:
    1. Teks Amazon mengekstrak teks dari gambar.
    2. Amazon Comprehend mendeteksi bahasa teks.
    3. Jika bahasa target berbeda dari bahasa yang terdeteksi, Amazon Terjemahan menerjemahkan ke bahasa sasaran.
    4. Amazon Polly membuat file audio sebagai output menggunakan teks.
  6. Alur kerja AWS Step Functions membuat file audio sebagai output dan menyimpannya di Amazon S3 dalam format MP3.
  7. URL yang telah ditandatangani sebelumnya dengan lokasi file audio yang disimpan di Amazon S3 dikirim kembali ke browser pengguna melalui API Gateway. Perangkat seluler pengguna memutar file audio menggunakan URL yang telah ditandatangani sebelumnya.

Di bagian berikut, kami membahas alasan mengapa kami memilih layanan tertentu, pola arsitektur, dan fitur layanan untuk solusi ini.

Layanan AWS AI

Beberapa layanan AI dihubungkan bersama untuk menyalakan Read For Me:

  • Amazon Textract mengidentifikasi teks dalam gambar yang diunggah.
  • Amazon Comprehend menentukan bahasanya.
  • Jika pengguna memilih bahasa lisan yang berbeda dari bahasa di gambar, kami menerjemahkannya menggunakan Amazon Translate.
  • Amazon Polly membuat file MP3. Kami memanfaatkan mesin neural Amazon Polly, yang menciptakan rekaman audio yang lebih alami dan hidup.

Salah satu manfaat utama menggunakan layanan AI ini adalah kemudahan adopsi dengan sedikit atau tanpa pengalaman pembelajaran mesin inti yang diperlukan. Layanan mengekspos API yang dapat dipanggil klien menggunakan SDK yang tersedia dalam berbagai bahasa pemrograman, seperti Python dan Java.

Dengan Read For Me, kami menulis yang mendasarinya AWS Lambda fungsi dalam Python.

AWS SDK untuk Python (Boto3)

Grafik AWS SDK untuk Python (Boto3) membuat interaksi dengan layanan AWS menjadi sederhana. Misalnya, baris kode Python berikut mengembalikan teks yang ditemukan pada gambar atau dokumen yang Anda berikan:

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

Semua kode Python dijalankan dalam masing-masing fungsi Lambda. Tidak ada server yang harus disediakan dan tidak ada infrastruktur yang harus dipelihara.

Pola arsitektur

Pada bagian ini, kita membahas pola arsitektur yang berbeda yang digunakan dalam solusi.

Tanpa Server

Kami menerapkan arsitektur tanpa server karena dua alasan utama: kecepatan untuk membangun dan biaya. Tanpa perangkat keras yang mendasari untuk dipelihara atau infrastruktur untuk digunakan, kami sepenuhnya berfokus pada kode logika bisnis dan tidak ada yang lain. Ini memungkinkan kami untuk mengaktifkan dan menjalankan prototipe yang berfungsi dalam hitungan hari. Jika pengguna tidak secara aktif mengunggah gambar dan mendengarkan rekaman, tidak ada yang berjalan, dan oleh karena itu tidak ada yang mengeluarkan biaya di luar penyimpanan. Aturan manajemen siklus hidup S3 menghapus gambar yang diunggah dan file MP3 setelah 1 hari, sehingga biaya penyimpanan rendah.

Alur kerja yang sinkron

Saat Anda membangun alur kerja tanpa server, penting untuk memahami kapan panggilan sinkron lebih masuk akal dari arsitektur dan pengalaman pengguna daripada proses asinkron. Dengan Read For Me, kami awalnya menempuh jalur asinkron dan berencana menggunakan WebSockets untuk berkomunikasi dua arah dengan front end. Alur kerja kami akan mencakup langkah untuk menemukan ID koneksi yang terkait dengan alur kerja Fungsi Langkah dan setelah selesai, beri tahu ujung depan. Untuk informasi lebih lanjut tentang proses ini, lihat Dari Poll ke Push: Transform API menggunakan Amazon API Gateway REST API dan WebSockets.

Kami akhirnya memilih untuk tidak melakukan ini dan menggunakan fungsi langkah ekspres yang sinkron. Pengguna memahami bahwa memproses gambar tidak akan instan, tetapi juga tahu itu tidak akan memakan waktu 30 detik atau satu menit. Kami berada di ruang di mana beberapa detik memuaskan pengguna akhir dan tidak membutuhkan manfaat dari WebSockets. Ini menyederhanakan alur kerja secara keseluruhan.

Alur kerja Fungsi Langkah Ekspres

Kemampuan untuk memecah kode Anda menjadi fungsi yang lebih kecil dan terisolasi memungkinkan kontrol yang halus, perawatan yang lebih mudah, dan kemampuan untuk menskalakan dengan lebih akurat. Misalnya, jika kami menentukan bahwa fungsi Lambda yang memicu Amazon Polly untuk membuat file audio berjalan lebih lambat daripada fungsi yang menentukan bahasa, kami dapat menskalakan fungsi tersebut secara vertikal, menambahkan lebih banyak memori, tanpa harus melakukannya untuk yang lain. Demikian pula, Anda membatasi radius ledakan dari apa yang dapat dilakukan atau diakses oleh fungsi Lambda Anda saat Anda membatasi cakupan dan jangkauannya.

Salah satu manfaat mengatur alur kerja Anda dengan Step Functions adalah kemampuan untuk memperkenalkan logika alur keputusan tanpa harus menulis kode apa pun.

Alur kerja Fungsi Langkah kami tidak rumit. Itu linier sampai langkah terjemahan. Jika kami tidak perlu memanggil fungsi Lambda terjemahan, biayanya lebih murah bagi kami, dan pengalaman yang lebih cepat bagi pengguna. Kita dapat menggunakan desainer visual di konsol Step Functions untuk menemukan kunci spesifik di payload input dan, jika ada, panggil satu fungsi di atas yang lain menggunakan JSONPath. Misalnya, muatan kami menyertakan kunci yang disebut terjemahan:

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

Di dalam desainer visual Step Functions, kami menemukan kunci terjemahan, dan menyiapkan aturan untuk dicocokkan.

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Arsitektur tanpa kepala

Amplify host kode front-end. Bagian depan ditulis dalam React dan kode sumbernya dicentang Komitmen Kode AWS. Amplify memecahkan beberapa masalah bagi pengguna yang mencoba menerapkan dan mengelola situs web statis. Jika Anda melakukan ini secara manual (menggunakan ember S3 yang disiapkan untuk hosting situs web statis dan mengatasinya dengan Amazon CloudFront), Anda harus mengakhiri sendiri cache setiap kali Anda melakukan penerapan. Anda juga harus menulis saluran CI/CD Anda sendiri. Amplify menangani ini untuk Anda.

Ini memungkinkan arsitektur tanpa kepala, di mana kode front-end dipisahkan dari backend dan setiap lapisan dapat dikelola dan diskalakan secara independen dari yang lain.

Analisis ID

Di bagian sebelumnya, kami membahas pola arsitektur untuk memproses gambar yang diunggah dan membuat file MP3 darinya. Memiliki dokumen yang dibacakan kembali kepada Anda adalah langkah pertama yang bagus, tetapi bagaimana jika Anda hanya ingin mengetahui sesuatu yang spesifik tanpa semuanya dibacakan kembali kepada Anda? Misalnya, Anda perlu mengisi formulir online dan memberikan ID negara atau nomor paspor Anda, atau mungkin tanggal kedaluwarsanya. Anda kemudian harus mengambil gambar ID Anda dan, sambil membacanya kembali untuk Anda, tunggu bagian tertentu itu. Atau, Anda dapat menggunakan Analisis ID.

Analisis ID adalah fitur Amazon Textract yang memungkinkan Anda melakukan kueri dokumen. Read For Me berisi menu drop-down di mana Anda dapat secara khusus menanyakan tanggal kedaluwarsa, tanggal penerbitan, atau nomor dokumen. Anda dapat menggunakan alur kerja yang sama untuk membuat file MP3 yang memberikan jawaban atas pertanyaan spesifik Anda.

Anda dapat mendemonstrasikan fitur Analisis ID di bacaforme.io/analyze.

Fitur Polly Tambahan

  • Read For Me menawarkan beberapa suara saraf menggunakan bahasa dan dialek yang berbeda. Perhatikan bahwa ada beberapa lainnya suara Anda dapat memilih, yang tidak kami terapkan. Saat suara baru tersedia, hanya pembaruan pada kode front-end dan fungsi lambda yang diperlukan untuk memanfaatkannya.
  • Layanan Polly juga menawarkan opsi lain yang belum kami sertakan dalam Read For Me. Itu termasuk menyesuaikan kecepatan suara dan tanda bicara.

Kesimpulan

Dalam posting ini, kami membahas cara menggunakan berbagai layanan AWS, termasuk AI dan tanpa server, untuk membantu tunanetra. Anda dapat mempelajari lebih lanjut tentang proyek Baca Untuk Saya dan menggunakannya dengan mengunjungi bacaforme.io. Anda juga dapat menemukan contoh Amazon Textract di GitHub repo. Untuk mempelajari lebih lanjut tentang Analisis ID, lihat Mengumumkan dukungan untuk mengekstrak data dari dokumen identitas menggunakan Amazon Textract.

Kode sumber untuk proyek ini akan menjadi sumber terbuka dan segera ditambahkan ke GitHub publik AWS.


Tentang Penulis

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Jack Marchetti adalah arsitek Solusi Senior di AWS. Dengan latar belakang di bidang rekayasa perangkat lunak, Jack terutama berfokus untuk membantu pelanggan mengimplementasikan arsitektur tanpa server yang digerakkan oleh peristiwa. Dia membangun aplikasi berbasis cloud terdistribusi pertamanya pada tahun 2013 setelah menghadiri konferensi AWS re:Invent kedua dan telah ketagihan sejak saat itu. Sebelum AWS, Jack menghabiskan sebagian besar karirnya dalam pengalaman membangun ruang biro iklan untuk beberapa merek terbesar di dunia. Jack secara hukum buta dan tinggal di Chicago bersama istrinya Erin dan kucing Minou. Dia juga seorang penulis skenario, dan sutradara dengan fokus utama pada film-film Natal dan horor. Lihat filmografi Jack di IMDb .

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Alak Eswaradass adalah Arsitek Solusi di AWS yang berbasis di Chicago, Illinois. Dia bersemangat membantu pelanggan merancang arsitektur cloud menggunakan layanan AWS untuk memecahkan tantangan bisnis. Dia memiliki gelar Master di bidang teknik ilmu komputer. Sebelum bergabung dengan AWS, dia bekerja untuk organisasi perawatan kesehatan yang berbeda, dan dia memiliki pengalaman mendalam dalam merancang sistem yang kompleks, inovasi teknologi, dan penelitian. Dia bergaul dengan putrinya dan menjelajahi alam bebas di waktu luangnya.

Aktifkan tunanetra untuk mendengar dokumen menggunakan Amazon Textract dan Amazon Polly PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.Swagat Kulkarni adalah Arsitek Solusi Senior di AWS dan penggemar AI/ML. Dia bersemangat untuk memecahkan masalah dunia nyata bagi pelanggan dengan layanan asli cloud dan pembelajaran mesin. Di luar pekerjaan, Swagat menikmati perjalanan, membaca, dan bermeditasi.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS