Textract, Lambda 및 MySQL을 사용한 자동 AWS 영수증 처리 시스템

발행: (2025년 12월 19일 오후 06:47 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

소개

이 블로그에서는 다음 서비스를 사용하여 AWS에서 엔드‑투‑엔드 자동 영수증 처리 시스템을 구축한 과정을 단계별로 안내합니다.

  • Amazon S3
  • AWS Lambda
  • Amazon Textract (AnalyzeExpense)
  • Amazon RDS (MySQL)
  • Lambda Layers (pymysql)

필요하면 이 저장소를 사용하세요

Architecture Overview
User uploads receipt (PDF / JPG)

Amazon S3 (ObjectCreated event)

AWS Lambda

Amazon Textract (AnalyzeExpense)

Amazon RDS (MySQL)

1단계 – MySQL 데이터베이스 (RDS) 생성

CREATE DATABASE receipt_db;

USE receipt_db;

CREATE TABLE ride_receipts (
    receipt_id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(100),
    ride_id VARCHAR(50),
    driver_name VARCHAR(100),
    vehicle_number VARCHAR(20),
    mode_of_vehicle VARCHAR(50),
    selected_price DECIMAL(10,2),
    time_of_ride TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2단계 – pymysql용 Lambda Layer 생성

mkdir pymysql_layer
cd pymysql_layer
mkdir python
pip install pymysql -t python/
zip -r pymysql_layer.zip python

AWS에 레이어 업로드

  1. Lambda → Layers 로 이동 → Create layer 클릭
  2. 런타임: Python 3.10
  3. pymysql_layer.zip 업로드

3단계 – Lambda 함수 생성

  • 런타임: Python 3.10
  • pymysql 레이어 연결
  • IAM 권한 추가:
    • AmazonTextractFullAccess
    • AmazonS3ReadOnlyAccess
    • CloudWatchLogsFullAccess

Lambda configuration screenshot

4단계 – Lambda 함수 코드 개요

함수는 다음을 수행합니다.

  1. Amazon S3에서 영수증 업로드 이벤트를 수신합니다.
  2. 버킷 이름과 객체 키를 읽어옵니다.
  3. Amazon Textract에 영수증을 전송해 구조화된 데이터를 추출합니다.
  4. 추출된 텍스트를 처리해 주요 영수증 정보를 식별합니다.
  5. 구조화된 데이터를 MySQL 데이터베이스에 저장합니다.

(전체 소스 코드는 연결된 저장소에서 확인할 수 있습니다.)

5단계 – S3 트리거 구성

  1. Lambda → Configuration → Triggers 로 이동합니다.
  2. S3 트리거 추가:
    • 이벤트 유형: ObjectCreated (PUT)
    • 버킷: receipt‑inp‑ak

6단계 – S3에 영수증 업로드

receipt1.jpg 또는 receipt.pdf와 같은 파일을 버킷에 업로드합니다.

S3 upload screenshot

7단계 – CloudWatch를 이용한 디버깅

다음 위치에서 로그를 확인합니다.

CloudWatch → /aws/lambda/receipt-textract

성공 로그 예시

Processing file: receipt.pdf
Extracted: {
 'vehicle_number': 'TN01B3694',
 'mode_of_vehicle': 'Car',
 'selected_price': 150.0
}

CloudWatch log screenshot

8단계 – MySQL에서 데이터 확인

SELECT 쿼리를 실행해 레코드가 정상적으로 삽입됐는지 확인합니다.

MySQL query result screenshot

주의: 테스트가 끝난 후에는 생성한 리소스를 반드시 삭제하세요. 더 많은 블로그와 배포 소식을 기대해 주세요.

Back to Blog

관련 글

더 보기 »