当前位置: 首页 > news >正文

【prompt实战】AI +OCR技术结合ChatGPT能力项目实践(BOL提单识别提取专家)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权)    

目录

1. 需求背景

2. 目标

3. BOL通用处理逻辑概述

3.1 基础信息 部分

3.2 货物信息部分:

3.3 参考信息部分

BOL的处理结果要求

4. 逻辑梳理

1. BACKGROUND

2. 识别的主要字段

基础信息:

Reference 信息:

3. 格式要求

4. OCR文本清晰度

5. 目标受众

6. 输出示例

7. 特殊要求

8. 数据验证

5. 提示词优化

优化前prompt

优化策略

优化后prompt

中文版

英文版

6. 效果评估

7. 项目收益


1. 需求背景

在公司的运输业务中,BOL(提单)是关键文档,标志着运输的开始,并包含重要的运营信息。目前,不同客户使用不同的BOL模板和处理方式。开发一个单一客户的OCR 信息提取方案通常需要约一周时间,然后才能接入RPA的流程。事实上来说,对于我司而言,BOL中的关键信息具有通用性,可以使用AI的文字理解来解决这个问题。

2. 目标

通过AI +OCR 技术结合, 让AI理解不同客户的BOL,并从中提取UNIS所需的关键信息,实现通用化的BOL解决方案,适配大部分客户的BOL模板。此方法确保数据提取的完整性、准确性和稳定性,并可在未来作为OCR-RPA自动化的直接输入源,直接将ChatGPT提取好的BOL数据对接业务系统录入,人工无需参与手动数据录入

3. BOL通用处理逻辑概述

3.1 基础信息 部分

以下信息是BOL的核心信息,尽量进行识别:

  • 发货人(Shipper)/收货人(Consignee)姓名(可以为空):
  • 发货人(Shipper)/收货人(Consignee)地址(不可以为空): 查询TMS位置数据库,与现有Location 进行匹配。如果没有匹配项,选择最接近或标签为“EDI”的地址。
  • 提货日期(Pick UP Date)(可以为空): BOL签发日期。
  • 特殊说明(Special Instruction)(可以为空): 如交货时间、特殊服务或托盘尺寸等。

3.2 货物信息部分:

包括但不限于Pallet #、Piece #、Weight、NMFC #/Class, 货物描述。通常情况下会有Customer Information 和 Carrier Information 两种描述, 需要都列举识别结果。


3.3 参考信息部分

在客户的BOL中有些参考信息,对于串联业务非常有帮助,需要按如下的逻辑进行和处理,有一定的按优先级要求:

  • Load Number (#):非常重要的字段,用于EDI传输。通过识别BOL中的关键词:“Load Number (#)”、“Load ID”、“ME ID”或“SID (#)”来获取。
  • Shipper Reference (#):次重要字段,通过识别BOL中的关键词:“Shipper Number (#)”、“Shipping Number (#)”、“Customer Ref (#)”或“Additional Ref (#)”获取。
  • Purchase Order (#):通过识别BOL中的关键词:“P.O. Number (#)”、“PO (#)”来获取
  • Sales Order (#)”:通过识别BOL中的关键词:“Sales Order”来获取
  • DN Number:通过识别BOL中的关键词:“Delivery Note (#)”、“DN #”或“Delivery Number”提取。
  • Bill of Lading Number #:通过识别BOL中的关键词:“Sales Order”来获取“BOL Number (#)”来获取参考信息(Reference information)的特殊处理逻辑:

Load Number (#)需要重点识别,如果识别不到,请使用以下逻辑进行替代处理

  • 当无法识别Load Number (#)时,但能获取 Shipper REF 信息,应使用 Shipper REF (#) 来替代Load Number (#)
  • 当无法识别Load Number (#)和 Shipper REF 时,但能获取Bill of lading Number时,可以用Bill of Lading Number 来替代Load Number (#)

REF/BOL 也需要重点识别, 如果识别不到,请使用以下逻辑进行替代处理(---待定)

  • 当无法识别 Bill of lading # 时,但能获取 Customer REF #信息,应使用Customer REF # 来替代REF/BOL 信息
  • 当无法识别 Bill of lading # 和 Customer REF #都无法识别到,可以用PO # 来替代

BOL的处理结果要求

AI处理BOL 的识别结果应该分为3个部分

  • 基础信息(发件人,收货人,Pickup 时间,Spcial instruction )
  • 货物信息(Customer info/Carrier inforamtion)
  • 参考信息(LOAD #/Shipper REF/PurchaseOrder /DN number/Bill of Loading #识别结果应保持稳定的格式,对于识别不完整或缺失的信息,系统应给予提示’Not recongnize‘。针对多页BOL,系统需识别并合并信息。

需要提取附件PDF格式的文字对应到不同位置;

4. 逻辑梳理

1. BACKGROUND

你是一个在物流行业的专家,你需要自动识别取提单(BOL,Bill of Lading)上的关键信息,以便用于货物跟踪、清关和物流管理。目的是准确识别和提取BOL上的重要信息字段,并确保数据的完整性和一致性。

2. 识别的主要字段

基础信息:
  • 发货人信息(Shipper Information):包括发货人的名称、地址、联系方式等。
  • 收货人信息(Consignee Information):包含收货人的名称、地址和联系方式。
  • 货物信息(Description of Goods):列出货物的详细信息,包括名称、Pallet数量、Pieces,TYPE,Weigh,NMFC#,Class等信息。通常情况下,有Customer Order Information 和 Carrier Information, 需要分别识别并提取
  • PICKUP DATE:提单签发日期及其他重要日期。
  • Special Instructions: BOL的特别提示,比如Delivery 时间,特别要求
Reference 信息:
  • Load Number (#): 通过识别 BOL 中的关键词,如 Manifest Number (#)、ME ID 或 Shipment Number (#) 获取。
  • Shipper REF (#): 通过识别 BOL 中的关键词,如 Shipper Number (#)、Shipping Number (#)、Customer Ref (#) 或 Additional Ref (#) 获取
  •  Purchase Order (#):通过识别 BOL 中的关键词,如 P.O. Number (#)、PO (#) 或 CustomerOrder (#) 获取。
  •  DN Number: 通过识别关键词 Delivery Note (#) 获取。
  • Bill of Lading Number (#): 通过识别 BOL 中的 BOL number (#) 关键字获取, • 需要更新到 TMS 中的 Manifest.Cust.BOL 字段。

3. 格式要求

  •  输出应为结构化数据,如JSON或XML格式,便于数据的进一步处理。
  • 若可能,有层次结构以方便嵌套字段(例如发货人和收货人信息中包含子字段,如名称和地址)。货物信息中包

相关文章:

【prompt实战】AI +OCR技术结合ChatGPT能力项目实践(BOL提单识别提取专家)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 需求背景 2. 目标 3. BOL通用处理逻辑…...

【Android】Android开发应用如何开启任务栏消息通知

Android开发应用如何开启任务栏消息通知 1. 获取通知权限2.编写通知工具类3. 进行任务栏消息通知 1. 获取通知权限 在 AndroidManifest.xml 里加上权限配置&#xff0c;如下。 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android…...

上传文件报错:the request was rejected because no multipart boundary was found

后端使用的springboot的MultipartFile上传文件&#xff0c;接口使用apifox调试过没有问题&#xff0c;但前端调接口报错。前端使用了fetch发送formData数据。 the request was rejected because no multipart boundary was found 前端使用的请求头是 multipart/form-data 没有…...

大模型—Dify本地化部署实战

Dify本地化部署实战 系统要求 安装 Dify 之前, 请确保你的机器已满足最低安装要求: CPU >= 2 CoreRAM >= 4 GiB本地部署 开始前先简单介绍下部署Dify需要用到的组件,稍微有点多,但放心,有Docker你怕啥? 关系数据库:postgres缓存:Redis向量数据库:支持weaviate…...

功能架构元模型

功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...

常用工具类——Collections集合框架

常用工具类——Collections集合框架 Collections 是 JDK 提供的一个工具类&#xff0c;提供了一系列静态方法&#xff0c;分类来复习&#xff01; 1.排序操作 reverse(List list) :反转顺序shuffle(List list) &#xff1a; 洗牌&#xff0c;将顺序打乱sort(List list) &…...

e2studio开发RA2E1(9)----定时器GPT配置输入捕获

e2studio开发RA2E1.9--定时器GPT配置输入捕获 概述视频教学样品申请硬件准备参考程序源码下载选择计时器时钟源UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()printf输出重定向到串口定时器输入捕获配…...

25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆

雅可比矩阵计算 雅可比矩阵的定义 假设我们有一个简单的两个关节的平面机器人臂&#xff0c;其末端执行器的位置可以表示为&#xff1a; 其中&#xff1a; L1​ 和 L2 是机器人臂的长度。θ1​ 和 θ2是关节的角度。 计算雅可比矩阵 雅可比矩阵 JJ 的定义是将关节速度与末…...

网络爬虫js逆向之异步栈跟栈案例

【注意&#xff01;&#xff01;&#xff01;】 前言&#xff1a; 1. 本章主要讲解js逆向之异步栈跟栈的知识&#xff08;通过单步执行调试&#xff09; 2. 使用关键字搜定位加密入口 3. 本专栏通过多篇文章【文字案例】的形式系统化进行描述 4. 本文章全文进行了脱敏处理 5. 详…...

使用Ollama本地部署deepseek

1、下载安装Ollama 前往下载页面 https://ollama.com/download下载好安装包&#xff0c;如同安装软件一样&#xff0c;直接安装即可 win中默认为C盘&#xff0c;如果需要修改到其他盘&#xff0c;查找具体教程 运行list命令&#xff0c;检查是否安装成功 2、修改模型下载的…...

Rust错误处理:从灭火器到核按钮的生存指南

开篇&#xff1a;错误处理的生存哲学 在Rust的平行宇宙里&#xff0c;错误分为两种人格&#xff1a; panic! → 核按钮&#x1f4a3;&#xff08;不可恢复&#xff0c;全系统警报&#xff09;Result → 灭火器&#x1f9ef;&#xff08;可控制&#xff0c;局部处理&#xff0…...

Golang:Go 1.23 版本新特性介绍

流行的编程语言Go已经发布了1.23版本&#xff0c;带来了许多改进、优化和新特性。在Go 1.22发布六个月后&#xff0c;这次更新增强了工具链、运行时和库&#xff0c;同时保持了向后兼容性。 Go 1.23 的新增特性主要包括语言特性、工具链改进、标准库更新等方面&#xff0c;以下…...

电脑运行黑屏是什么原因?原因及解决方法

电脑运行黑屏是指电脑在正常开机或使用过程中&#xff0c;突然出现屏幕变黑&#xff0c;无法显示任何内容的现象。这种现象可能会给用户带来很多不便&#xff0c;甚至造成数据丢失或硬件损坏。那么&#xff0c;电脑运行黑屏是什么原因呢&#xff1f;下面我们将分析几种可能的原…...

redis之AOF持久化过程

流程图 在redis.conf文件中配置appendonly为yes则开启aof持久化机制 #开启aof持久化&#xff0c;默认关闭为no appendonly no也可以在命令行开启 aof刷盘策略 #每个写操作都会同步刷盘。 appendfsync always #执行命令后先放入aof缓冲区&#xff0c;每秒钟将缓冲区数据刷盘…...

Elasticsearch:向量搜索的快速介绍

作者&#xff1a;来自 Elastic Valentin Crettaz 本文是三篇系列文章中的第一篇&#xff0c;将深入探讨向量搜索&#xff08;也称为语义搜索&#xff09;的复杂性&#xff0c;以及它在 Elasticsearch 中的实现方式。 本文是三篇系列文章中的第一篇&#xff0c;将深入探讨向量搜…...

Docker在安装时遇到的问题(第一部分)

一、在用docker-config-manager安装yum源时出现错误 [rootlocalhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 已加载插件&#xff1a;fastestmirror, langpacks adding repo from: https://download.docker.com/linux/ce…...

使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现

使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现 在 iOS 开发中,OpenGL ES 是一个强大的工具,用于实现高性能的 2D 和 3D 图形渲染。本文将详细分析一段完整的代码,展示如何使用 OpenGL ES 在 iOS 上渲染一个简单的四边形。我们将从代码的结构、关键模块、着色器的实…...

Spring Boot 2 快速教程:WebFlux处理流程(五)

WebFlux请求处理流程 下面是spring mvc的请求处理流程 具体步骤&#xff1a; 第一步&#xff1a;发起请求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器请求HandlerMapping查找 Handler &#xff08;可以根据xml配置、注解进行查找&#xff09; 匹配条件包括…...

Vue 鼠标事件合集,关于鼠标右键的处理方法(改写鼠标右键方法、自定义鼠标右键)

鼠标事件使用 mousedown"canvasDown($event)"按下事件合集 click 点击某个对象时触发 mousedown 鼠标按钮被按下时触发 mouseup 鼠标按钮被松开时触发 mouseleave 当鼠标指针移出元素时触发 dblclick 双击时触发 mousemove 鼠标移动时触发&#xff0c…...

两种交换排序算法--冒泡,快速

目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;基本思想是通过反复交换相邻的元素&#xff0c;直到整个序列有序。它的名字来源于较大的元素像气泡…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...