You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Google Natural Language API提取文本邮箱?含名片场景Python方案

嘿,刚好这两个问题可以串起来解决,我来给你详细说清楚——先讲基础的Google NLP API提取邮箱的逻辑,再给你一套结合Vision API识别名片的完整Python实现方案。

如何使用Google Natural Processing API从文本中提取邮箱地址?

Google Natural Language API的**实体识别(Entity Recognition)**功能直接支持识别EMAIL类型的实体,这是最可靠的方法(比自己写正则适配各种复杂场景省心多了)。

核心步骤:

  • 先在Google Cloud控制台启用Natural Language API,配置好认证(比如设置GOOGLE_APPLICATION_CREDENTIALS环境变量指向你的服务账号密钥JSON文件)。
  • 调用API的实体分析接口,传入待处理的文本。
  • 遍历返回的实体结果,筛选出类型为EMAIL的条目,对应的name字段就是邮箱地址。
基于Python结合Google Vision API识别名片 + 提取邮箱的完整方案

如果你已经用Vision API识别了名片得到文本,那直接跳转到提取邮箱的步骤就行;如果还没做名片识别,咱们一步到位:

第一步:准备工作

  1. 安装依赖包:
pip install google-cloud-vision google-cloud-language
  1. 在Google Cloud控制台启用Vision API和Natural Language API,下载服务账号密钥JSON文件,设置环境变量:
    • Linux/macOS:
      export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
      
    • Windows(命令提示符):
      set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
      

第二步:Python代码实现

from google.cloud import vision_v1 as vision
from google.cloud import language_v1

def extract_text_from_business_card(image_path):
    """用Google Vision API识别名片中的文本"""
    client = vision.ImageAnnotatorClient()

    with open(image_path, "rb") as image_file:
        content = image_file.read()

    image = vision.Image(content=content)
    # 用专门的文档文本识别,比通用OCR更适配名片排版
    response = client.document_text_detection(image=image)
    document = response.full_text_annotation

    extracted_text = document.text
    if response.error.message:
        raise Exception(
            f"Vision API调用出错: {response.error.message}"
        )
    return extracted_text

def extract_email_from_text(text):
    """用Google Natural Language API从文本中提取邮箱"""
    client = language_v1.LanguageServiceClient()
    document = language_v1.Document(
        content=text, type_=language_v1.Document.Type.PLAIN_TEXT
    )

    # 调用实体分析接口
    response = client.analyze_entities(request={"document": document})
    emails = []

    # 遍历实体,筛选邮箱类型
    for entity in response.entities:
        if entity.type_ == language_v1.Entity.Type.EMAIL:
            emails.append(entity.name)
    
    return emails

# 主流程
if __name__ == "__main__":
    # 替换成你的名片图片路径
    card_image_path = "business_card.jpg"
    try:
        # 1. 识别名片文本
        card_text = extract_text_from_business_card(card_image_path)
        print("名片识别到的文本:\n", card_text)
        
        # 2. 提取邮箱
        email_list = extract_email_from_text(card_text)
        if email_list:
            print("\n提取到的邮箱地址:")
            for email in email_list:
                print("-", email)
        else:
            print("\n未识别到邮箱地址")
    except Exception as e:
        print("出错了:", str(e))

一些实用提示

  • 如果是中文名片,可以给Vision API加language_hints=["zh"]参数,提升识别准确率。
  • 如果文本里有多个邮箱,API会全部识别出来并返回列表。
  • 记得检查Google Cloud账号的配额,避免因调用次数超限导致失败。

内容的提问来源于stack exchange,提问作者x86-64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:58:12