用Google API 提取名片信息

简介: 我们每个人或多或少都会使用到名片。但是如果名片数量一大,管理它们就显得非常麻烦。因此我产生用这篇文章的案例来管理他们。

介绍

我们每个人或多或少都会使用到名片。但是如果名片数量一大,管理它们就显得非常麻烦。因此我产生用这篇文章的案例来管理他们。

这里,我先用手机对每张名片拍照,并按以下流程进行处理:

38e6c9eb36604a8b974cb8cce546a2e4e2979f78

把获得的名片图像交给我们的应用程序,抽取人名,公司名称,地址等信息。这里我使用了Google Vision API 和 自然语言(Natural Language )API,因为这两个API简单易用,并且性能也很不错。

我使用Python来编写我的这个应用程序,来调用 Google Vision API 和 Natural Language API。

创建步骤

第 0 步: 准备

第 1 步: 用Google Vision API识别文本

第 2 步: 用Natural Language API抽取人名,公司名称及地址信息

第 3 步: 整合第1和第2步

第0步 准备

在开始应用程序编写之前,我们要安装必要的类库,下载配置以及设置API的键值。从这个链接你能设置 Google API key 。

安装类库

执行一下命令行来安装类库。

$ pip install requests
$ pip install pyyaml

下载资源库

这里我已经事先准备好了资源库。也可以从下面的链接下载。

设置API Key

把Google API key 写进配置文件 (plugins/config/google.yaml).
首先,打开 google.yaml 把你的API key替换掉 xxx。

token: xxx

第1步 用Google Vision API识别文本

Vision API 简介

依靠强大的机器学习模型,谷歌 Vision API 能让你编写自己的图像识别应用程序。Vision API 有以下的功能:

  • 图像分类 (例如 “快艇” “狮子” “埃菲尔铁塔” 等等)
  • 脸部识别
  • 文本识别
  • 标志识别
  • 地标识别
  • 安全搜索识别

Vision API 每月有1000个免费请求。

编写脚本

这里我们编写Python脚本来使用 Vision API。把以下代码保存为plugins/apis/vision.py。 这里我们要使用UTF-8编码。

# -*- coding: utf-8 -*-
import base64
import requests


def detect_text(image_file, access_token=None):

    with open(image_file, 'rb') as image:
        base64_image = base64.b64encode(image.read()).decode()

    url = 'https://vision.googleapis.com/v1/images:annotate?key={}'.format(access_token)
    header = {'Content-Type': 'application/json'}
    body = {
        'requests': [{
            'image': {
                'content': base64_image,
            },
            'features': [{
                'type': 'TEXT_DETECTION',
                'maxResults': 1,
            }]

        }]
    }
    response = requests.post(url, headers=header, json=body).json()
    text = response['responses'][0]['textAnnotations'][0]['description'] if len(response['responses'][0]) > 0 else ''
    return text

输入图像文件路径和API key到detect_text 函数, 我们就能得到图像文件中的文本信息

运行脚本

首先,把脚本文件移入 plugins/tests 文件夹。其中已经有一个test_vision.py 文件。在test_vision.py中, 编写调用detect_text 函数的测试用例。如果运行正常,我们就能获取图像中的文本信息了。

用下面 example_en.png这张名片作为输入,运行脚本。

a05bb95b1700b76f30c8e7b775657dc7af0fcf43

$ python test_vision.py data/example_en.png

输出结果

John Smith.
Capsule Corporation
217-767-8187
1332 Spring Street Elwin Illinois

第 2 步用Natural Language API抽取人名,公司名称及地址信息

Natural Language API简介

Natural Language API 提供了强大的机器学习模型,以REST API 的形式识别文本结构和其中的含义。Natural Language API 有一下功能:

  • 实体识别 (如,个人姓名,机构名称,事件信息等)
  • 语意分析 (产品评论中的情感,客户意见等)
  • 语法分析

Vision API 每月有5000个免费请求。

运行脚本

同样我们编写Python脚本来调用Natural Language API. 保存脚本为plugins/apis/language.py。注意使用UTF-8编码。

# -*- coding: utf-8 -*-
import requests


def extract_entities(text, access_token=None):

    url = 'https://language.googleapis.com/v1beta1/documents:analyzeEntities?key={}'.format(access_token)
    header = {'Content-Type': 'application/json'}
    body = {
        "document": {
            "type": "PLAIN_TEXT",
            "language": "EN",
            "content": text
        },
        "encodingType": "UTF8"
    }
    response = requests.post(url, headers=header, json=body).json()
    return response


def extract_required_entities(text, access_token=None):
    entities = extract_entities(text, access_token)
    required_entities = {'ORGANIZATION': '', 'PERSON': '', 'LOCATION': ''}
    for entity in entities['entities']:
        t = entity['type']
        if t in required_entities:
            required_entities[t] += entity['name']

    return required_entities

把文本数据和API key 以参数形式传入 extract_entities 函数, 不同的实体信息就能被提取出来。而我们只需要 公司名称个人姓名, 地点信息 。extract_required_entities 函数就是用来筛选出这些需要的内容。

运行脚本

同样,把脚本文件移入plugins/tests 文件夹。我们会看到一个test_language.py 文件。在test_language.py中,编写调用 extract_required_entities 函数的测试用例。

这里我用准备好的 example_en.txt文本文件作为输入运行脚本。在example_en.txt 文本文件中包含了上一步的输出结果。

$ python test_language.py data/example.txt

输出结果

{'LOCATION': 'Spring Street Elwin Illinois', 'PERSON': 'John Smith', 'ORGANIZATION': 'Capsule Corporation'}

Step 3 整合第1和第2步I

最后,我们再编写另一个脚本整合 Vision API 和 Natural Language API。

编写脚本

编写脚本整合 Vision API 和 Natural Language API. 保存为 plugins/apis/integration.py。这里我们要使用UTF-8编码。

# -*- coding: utf-8 -*-
from .language import extract_required_entities
from .vision import detect_text


def extract_entities_from_img(img_path, access_token):

    text = detect_text(img_path, access_token)
    entities = extract_required_entities(text, access_token)

    return entities

通过把图像文件路径和API key 作为参数输入 extract_entities_from_img ,就能从名片图像中提取出以上提到的信息数据了。

运行脚本

首先,把脚本文件移入plugins/tests 文件夹。其中已经存在一个test_integration.py文件。在test_integration.py中编写调用extract_entities_from_img 的测试用力。 

用图像文件 example_en.png作为输入数据运行脚本。

$ python test_integration.py data/example_en.png

输出结果

{'LOCATION': 'Spring Street Elwin Illinois', 'PERSON': 'John Smith', 'ORGANIZATION': 'Capsule Corporation'}

结论

以上我们用 Google Vision API 和 Natural Language API编写了一个简单的提取名片信息的应用程序。然而,这只是个简单的原型,之后我还会对它进行改进,让它更加完善。


以上为译文

文章原标题《Extracting Information from Business Card with Google API》,作者:HIRONSAN

文章为简译,更为详细的内容,请查看原文


目录
相关文章
|
1月前
|
人工智能 Java API
Google Gemini API 接口调用方法
Google 最近发布的 Gemini 1.0 AI 模型通过其升级版,Gemini,标志着公司迄今为止最为强大和多功能的人工智能技术的突破。
|
2月前
|
API PHP 开发者
大麦网 API 接口商品详情信息 API
为了让更多用户了解到大麦网的商品详情,并能够方便地获取相关信息,大麦网推出了商品详情 API 接口。本文将介绍大麦网商品详情 API 接口的作用、使用方法和注意事项,帮助广大开发者更加方便地接入大麦网的产品。
|
2月前
|
机器学习/深度学习 搜索推荐 API
商品信息全景图:API接口在聚合商品数据中的应用
在电子商务的世界中,API接口是连接不同服务和数据的桥梁。特别是在商品信息的聚合上,API接口扮演了至关重要的角色,它允许开发者从多个来源收集、整合并展示商品信息,从而为消费者提供全面且一致的购物体验。本文将深入探讨API接口在聚合商品数据中的应用,并通过具体的代码示例来揭示其工作原理。
|
2月前
|
机器学习/深度学习 JSON 监控
智能定价模型:借助API实时更新商品价格信息
在电子商务的迅猛发展中,价格战成为商家间常见的竞争方式。然而,一成不变的价格策略无法满足市场的即时需求和消费者的多变偏好。因此,智能定价(也称为动态定价)成为了电商平台提升市场竞争力的关键工具。智能定价模型通过实时监控市场数据和消费者行为,自动调整商品价格以最大化收益或实现其他商业目标。本文将深入探讨如何利用API技术实现智能定价,并提供一个Python代码示例来指导读者进行实时价格更新。
|
1月前
|
JavaScript 前端开发 Java
淘宝/天猫获取sku详细信息 API接口(如何抓取别人的sku图淘宝)
淘宝/天猫平台提供了获取商品SKU(Stock Keeping Unit,库存量单位)详细信息的API接口。SKU通常代表一种具有独特属性的商品变体,如颜色、尺寸等。为了获取淘宝/天猫商品的SKU详细信息,您可以遵循以下步骤:
|
1月前
|
存储 API 数据安全/隐私保护
1688阿里巴巴中国站获得公司档案信息 API接口(档案信息有什么用)
要获取1688阿里巴巴中国站的公司档案信息API接口,你需要遵循阿里巴巴开放平台的开发流程,并申请相应的API权限。以下是一些基本的步骤和指导:
|
1月前
|
JSON 缓存 API
淘宝天猫获取sku详细信息 API 调用文档 及请求代码
淘宝天猫获取SKU详细信息的API调用通常涉及到商品信息的API接口。在淘宝开放平台或天猫开放平台上,你可以找到相关的API文档和调用示例。下面是一个简化的步骤和示例代码来展示如何调用这些API:
|
1月前
|
API 开发工具 开发者
淘系API接口推荐:淘宝商品描述信息数据接口
淘宝商品描述信息数据接口是一个功能强大的API,它允许开发者获取商品的详细描述信息,包括标题、价格、图片和详细描述等。 要使用这个接口,需要遵循以下步骤: 注册开发者账号:您需要访问淘宝开放平台官方网站,注册成为开发者,并提供个人或企业的相关信息。 创建应用并选择权限:在淘宝开放平台的应用管理页面中创建新应用,并选择“获取商品详情”权限。提交应用创建申请后,等待淘宝审核。 获取API凭证:审核通过后,您将获得App Key和App Secret,这些凭证是调用API时的重要认证信息。请妥善保管App Secret,避免泄露,以保障API调用的安全性。
27 0
|
2月前
|
数据挖掘 API 数据处理
获取商品详情信息API接口:1688开放平台功能解析
首先,要获取商品详情信息,开发者需要向1688开放平台申请相应的权限,并遵循其调用规则。在调用商品详情信息API接口时,需要传入相应的请求参数,如商品ID、调用时间戳、密钥等。这些参数对于确保接口的正常运行至关重要。
|
2月前
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
24 0