一个美好的清晨
我(迷迷糊糊醒来):你怎么起来这么早? 女友(一脸疲惫地敲着键盘):我在工作。
凑近一看,我惊讶地发现女友居然在傻傻地从快递单图片上一个字一个字地录信息到 Excel 里。
我(心疼地):你们公司没有自动化识别工具? 女友:有啊,但是只支持一些标准化的证件、票据识别,像这种快递单上的信息都得手动录入。
听到这里,我神秘一笑,露出一个“你交给我吧”的表情。
我:我来帮你写一个自动识别小程序。 女友(眼神中透着怀疑):真的吗?
于是,我打开了腾讯云智能结构化OCR官网,信心满满地说:它不仅支持标准化的证件识别,还支持非标准化识别。只有你想不到,没有它做不到!
开始代码创作之旅
我让女友坐到一边,打开电脑,开始了我的代码创作。
贴心的腾讯云还给我们提供了免费额度,对于女友这点小数据量来说,完全不用花钱!而且就算需要付费,价格也非常实惠。心里默默想着:下次有需求指定还选它。
开通服务与接口体验
进入腾讯云控制台,找到 API Explorer > 智能结构化高级版识别。仔细一看这就是腾讯出品的专业水准:
- 接口体验调试功能很贴心,配套完整的 Demo 案例;
- 支持多种编程语言,无论是 Java、Python、PHP 还是 Go,都能轻松上手;
- 一键调试功能让测试变得无比简单,随时检查功能是否符合需求。
找一张示例图片,把它转换为 Base64 格式后,运行调试,立马输出了完整的数据结果!
灵魂拷问:按需取数与 URL 资源输入
女友:我只需要快递单号、发件地址和收件地址,这输出的字段也太多了吧?
我:不用担心,API 支持按需取数。只需要在 ItemNames
字段中配置你需要的字段即可。比如我只需要寄方字段:
{
"Response": {
"Angle": 0,
"RequestId": "45c4fdcf-e857-4148-ad33-190b665b457a",
"StructuralList": [
{
"Groups": [
{
"Lines": [
{
"Key": {
"AutoName": "寄方",
"ConfigName": null
},
"Value": {
"AutoContent": "北京市北京市XXXXX3****0092",
"Coord": {
"LeftBottom": {
"X": 0,
"Y": 0
},
"LeftTop": {
"X": 0,
"Y": 0
},
"RightBottom": {
"X": 0,
"Y": 0
},
"RightTop": {
"X": 0,
"Y": 0
}
}
}
}
]
}
]
},
{
"Groups": [
{
"Lines": [
{
"Key": {
"AutoName": "寄方",
"ConfigName": null
},
"Value": {
"AutoContent": "XXXXX鱼专卖店153****2179153****2179",
"Coord": {
"LeftBottom": {
"X": 0,
"Y": 0
},
"LeftTop": {
"X": 0,
"Y": 0
},
"RightBottom": {
"X": 0,
"Y": 0
},
"RightTop": {
"X": 0,
"Y": 0
}
}
}
}
]
}
]
}
],
"WordList": []
}
}
女友:可我的图片有些在线地址,难不成要一个个下载后要上传,这样还是很麻烦吧?
我:完全不需要!接口还支持直接传入 URL 的方式,简单又方便。
PDF 数据问题,完美解决
就在我以为一切都准备妥当时,突然发现他们的部分图片居然存储在 PDF 文件中。心里一凉,装逼失败?
赶紧返回接口文档仔细查看,发现 API 支持 PDF 文件识别!立刻运行测试,输出结果完美解决问题。
自动生成代码,一气呵成
最令人惊喜的是,刚才通过 API Explorer 调试的功能,已经自动生成了代码模板。我只需要稍加修改,就能直接使用!
于是,我花了 5分钟 写了一个简单的循环遍历调用代码,实现了整个功能。再花 5分钟 跑完所有数据,女友瞬间露出了崇拜的小眼神。
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models
# 待识别的URL列表
urls = [
"URL_1",
"URL_2",
"URL_3"
# 添加更多URL
]
try:
# 实例化一个认证对象
cred = credential.Credential("SecretId", "SecretKey")
# 实例化一个http选项
httpProfile = HttpProfile()
httpProfile.endpoint = "ocr.tencentcloudapi.com"
# 实例化一个client选项
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象
client = ocr_client.OcrClient(cred, "", clientProfile)
# 遍历URL列表
for url in urls:
# 实例化一个请求对象
req = models.SmartStructuralProRequest()
params = {
"ImageUrl": url,
"ItemNames": ["寄方"],
"ReturnFullText": False
}
req.from_json_string(json.dumps(params))
# 发送请求并输出结果
resp = client.SmartStructuralPro(req)
print(f"Result for {url}:")
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
家庭“帝”位与三菜一汤
看着女友崇拜地说:“你太厉害了吧!”,我心中暗自得意:这就是腾讯云智能结构化OCR高级版的超能力!
凭借它,我不仅解决了女友的难题,还成功在家庭中体验了一次“帝”位待遇。晚上女友做了一桌丰盛的三菜一汤,真是美滋滋!
个人简介
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
📖 保持关注我的博客,让我们共同追求技术卓越。