Przejdź do treści

AWS Lambda: OCR i Tłumaczenie Tekstu w Chmurze AWS

aws rekognition blog 2024

W dzisiejszym artykule pokażę, jak połączyć dwa potężne serwisy AWS – Rekognition i Translate – w jednej funkcji Lambda, aby automatycznie wyciągać tekst z obrazów zapisanych w S3, a następnie tłumaczyć ten tekst na wybrany język. Na przykładzie mojego projektu, przekształcimy obraz z tekstem w dokument tekstowy, a na końcu stworzymy jego przetłumaczoną wersję.

Ten proces jest niezwykle przydatny, gdy pracujesz z obrazami zawierającymi informacje w różnych językach. Ponieważ funkcja lambda automatycznie wykrywa język i tłumaczy odczytany tekst na wskazany przez ciebie język. W moim przypadku użyję przykładowych plików z S3, z których niektóre mogą być trudne do odczytania – zobaczymy, jak sobie z tym poradzi AWS Rekognition.

AWS rekognition – OCR with Translate in Lambda

Jak to działa?

Najpierw użyjemy AWS Rekognition do odczytania tekstu z obrazu, a następnie Amazon Translate przetłumaczy go na wybrany język – w moim przypadku na polski. Na koniec oba pliki tekstowe (oryginalny i przetłumaczony) zostaną zapisane w S3.

Wymagania

Aby wdrożyć ten projekt, potrzebujesz:

  • Konta w AWS,
  • Uprawnień do korzystania z Rekognition, S3 i Translate,
  • Plików graficznych zapisanych w S3.

Funkcja Lambda – kod

Poniżej znajdziesz kod funkcji Lambda, która wykonuje wszystkie opisane zadania. Zostawiłem pełne wyjaśnienia w filmie, więc tutaj zamieszczam tylko kod. Pamiętaj, żeby w kodzie dopasować szczegóły, takie jak nazwy bucketów S3 czy plików.

import json
import boto3

def lambda_handler(event, context):
    rekognition_client = boto3.client('rekognition')
    s3_client = boto3.client('s3')
    translate_client = boto3.client('translate')
    
    bucket_name = 'rekognition-bucket-00235'
    object_key = 'OCR/Black_and_White_Minimalist_Coffee_Presentation.jpg'
    
    response = rekognition_client.detect_text(
        Image={
            'S3Object': {
                'Bucket': bucket_name,
                'Name': object_key
            }
        }
    )
    
    detected_text_lines = []
    for text in response['TextDetections']:
        if text['Type'] == 'LINE':
            detected_text_lines.append(text['DetectedText'])
            
    extracted_text = '\n'.join(detected_text_lines)
    
    new_file_key = object_key.rsplit('.',1)[0] + '_extracted_text.txt'
    
    s3_client.put_object(
        Bucket=bucket_name,
        Key=new_file_key,
        Body=extracted_text.encode('utf-8'),
        ContentType='text/plain; charset=utf-8'
    )
    
    translate_response = translate_client.translate_text(
        Text=extracted_text,
        SourceLanguageCode='auto',
        TargetLanguageCode='pl'
    )
    
    translated_text = translate_response['TranslatedText']
    new_file_key_translated = object_key.rsplit('.',1)[0] + '_translated_pl.txt'
    
    s3_client.put_object(
        Bucket=bucket_name,
        Key=new_file_key_translated,
        Body=translated_text.encode('utf-8'),
        ContentType='text/plain; charset=utf-8'
    )


    return {
        'statusCode': 200,
        'body': json.dumps(f'Text extracted and saved as {new_file_key}')
    }

Podsumowanie

Po wdrożeniu tego kodu będziesz w stanie automatycznie wyciągać tekst z obrazów w S3 i tłumaczyć go na język który wskażesz za pomocą AWS Rekognition i Translate. W moim filmie szczegółowo wyjaśniam każdy krok i pokazuję, jak działa cały proces, dlatego zachęcam Cię do obejrzenia go. Będziesz mógł zobaczyć, jak narzędzia AWS radzą sobie nawet z trudniejszymi obrazami.

Amazon Rekognition – wykrywanie obiektów i twarzy za pomocą AWS Lambda
Jak zostać DevOpsem – Roadmapa dla początkujących

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *