Textract, Lambda 및 MySQL을 사용한 자동 AWS 영수증 처리 시스템
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에 레이어 업로드
- Lambda → Layers 로 이동 → Create layer 클릭
- 런타임: Python 3.10
pymysql_layer.zip업로드
3단계 – Lambda 함수 생성
- 런타임: Python 3.10
- pymysql 레이어 연결
- IAM 권한 추가:
AmazonTextractFullAccessAmazonS3ReadOnlyAccessCloudWatchLogsFullAccess

4단계 – Lambda 함수 코드 개요
함수는 다음을 수행합니다.
- Amazon S3에서 영수증 업로드 이벤트를 수신합니다.
- 버킷 이름과 객체 키를 읽어옵니다.
- Amazon Textract에 영수증을 전송해 구조화된 데이터를 추출합니다.
- 추출된 텍스트를 처리해 주요 영수증 정보를 식별합니다.
- 구조화된 데이터를 MySQL 데이터베이스에 저장합니다.
(전체 소스 코드는 연결된 저장소에서 확인할 수 있습니다.)
5단계 – S3 트리거 구성
- Lambda → Configuration → Triggers 로 이동합니다.
- S3 트리거 추가:
- 이벤트 유형: ObjectCreated (PUT)
- 버킷: receipt‑inp‑ak
6단계 – S3에 영수증 업로드
receipt1.jpg 또는 receipt.pdf와 같은 파일을 버킷에 업로드합니다.

7단계 – CloudWatch를 이용한 디버깅
다음 위치에서 로그를 확인합니다.
CloudWatch → /aws/lambda/receipt-textract
성공 로그 예시
Processing file: receipt.pdf
Extracted: {
'vehicle_number': 'TN01B3694',
'mode_of_vehicle': 'Car',
'selected_price': 150.0
}

8단계 – MySQL에서 데이터 확인
SELECT 쿼리를 실행해 레코드가 정상적으로 삽입됐는지 확인합니다.

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