使用 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

  1. 前往 Lambda → LayersCreate layer
  2. 运行时:Python 3.10
  3. 上传 pymysql_layer.zip

步骤 3 – 创建 Lambda 函数

  • 运行时:Python 3.10
  • 挂载 pymysql Layer
  • 添加 IAM 权限:
    • AmazonTextractFullAccess
    • AmazonS3ReadOnlyAccess
    • CloudWatchLogsFullAccess

Lambda configuration screenshot

步骤 4 – Lambda 函数代码概览

该函数:

  1. 监听来自 Amazon S3 的收据上传事件。
  2. 读取 bucket 名称和对象键。
  3. 将收据发送至 Amazon Textract 进行结构化数据提取。
  4. 处理提取的文本以识别关键收据信息。
  5. 将结构化数据写入 MySQL 数据库。

(完整源码可在链接的仓库中找到。)

步骤 5 – 配置 S3 触发器

  1. 打开 Lambda → Configuration → Triggers
  2. 添加 S3 触发器
    • 事件类型:ObjectCreated (PUT)
    • Bucket:receipt‑inp‑ak

步骤 6 – 将收据上传至 S3

receipt1.jpgreceipt.pdf 等干净文件上传到该 bucket。

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

相关文章

阅读更多 »