使用 Textract、Lambda 和 MySQL 的自动化 AWS 收据处理系统
发布: (2025年12月19日 GMT+8 17:47)
3 分钟阅读
原文: Dev.to
Source: Dev.to
介绍
在本博客中,我将向你展示如何使用以下 AWS 服务构建一个端到端的自动化收据处理系统:
- Amazon S3
- AWS Lambda
- Amazon Textract(AnalyzeExpense)
- Amazon RDS(MySQL)
- Lambda Layers(pymysql)
架构概览
用户上传收据(PDF / JPG)
↓
Amazon S3(ObjectCreated 事件)
↓
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 中上传 Layer
- 前往 Lambda → Layers → Create layer
- 运行时:Python 3.10
- 上传
pymysql_layer.zip
步骤 3 – 创建 Lambda 函数
- 运行时:Python 3.10
- 挂载 pymysql Layer
- 添加 IAM 权限:
AmazonTextractFullAccessAmazonS3ReadOnlyAccessCloudWatchLogsFullAccess

步骤 4 – Lambda 函数代码概览
该函数:
- 监听来自 Amazon S3 的收据上传事件。
- 读取 bucket 名称和对象键。
- 将收据发送至 Amazon Textract 进行结构化数据提取。
- 处理提取的文本以识别关键收据信息。
- 将结构化数据写入 MySQL 数据库。
(完整源码可在链接的仓库中找到。)
步骤 5 – 配置 S3 触发器
- 打开 Lambda → Configuration → Triggers。
- 添加 S3 触发器:
- 事件类型:ObjectCreated (PUT)
- Bucket:receipt‑inp‑ak
步骤 6 – 将收据上传至 S3
将 receipt1.jpg 或 receipt.pdf 等干净文件上传到该 bucket。

步骤 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 查询以确认记录已插入。

注意: 测试完成后请记得删除已创建的资源。敬请期待更多博客和部署案例。