如何使用 Claude 转录文档

Claude 3 非常擅长读取非结构化文本以及图像和 PDF 中的信息,并将其转换为结构化文本。我们将看几个示例,但首先让我们设置运行笔记本所需的代码。

%pip install anthropic IPython
import base64
from anthropic import Anthropic
client = Anthropic()
MODEL_NAME = "claude-3-opus-20240229"

def get_base64_encoded_image(image_path):
    with open(image_path, "rb") as image_file:
        binary_data = image_file.read()
        base64_encoded_data = base64.b64encode(binary_data)
        base64_string = base64_encoded_data.decode('utf-8')
        return base64_string

转录键入文本

与传统的 OCR 系统相比,使用 Claude 3 的优势在于,由于 Claude 3 强大的推理能力,您可以精确指定要转录的内容。对于此图像,让我们仅转录答案中的代码。

from IPython.display import Image
Image(filename='../images/transcribe/stack_overflow.png')

png

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": get_base64_encoded_image("../images/transcribe/stack_overflow.png")}},
            {"type": "text", "text": "转录答案中的代码。只输出代码。"}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
import os
import base64

image = 'test.jpg'

encoded_string = ""
with open(image, "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())
file = encoded_string

转录手写文本

这很好,但让我们尝试一些更难的。Claude 3 在转录手写文本方面也非常出色。让我们要求 Claude 3 转录这个手写的处方便笺。

Image(filename='../images/transcribe/school_notes.png')

png

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": get_base64_encoded_image("../images/transcribe/school_notes.png")}},
            {"type": "text", "text": "转录此文本。只输出文本,不要输出其他任何内容。"}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
细胞组织层次

1) 细胞组合成组织。
2) 组织组合成器官。
3) 器官组合成器官系统
4) 器官系统组合成生物体

生物体 -> 能够独立进行生命过程的生物。

- 多细胞生物有专门化的细胞来执行特定功能。
> 这使它们更有效率,并且通常寿命更长。

组织 = 一组执行共同功能的相似细胞。

1) 动物由四种基本组织构成
> 神经组织、上皮组织、结缔组织和肌肉组织

2) 植物有三种组织
> 输导组织、保护组织和基本组织

转录表格

我们来尝试结合键入和手写文本?这在保险和报告表格等各种文档中很常见。

Image(filename='../images/transcribe/vehicle_form.jpg')

jpeg

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": get_base64_encoded_image("../images/transcribe/vehicle_form.jpg")}},
            {"type": "text", "text": "准确转录此表格。"}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
车辆事故报告表

使用此表格报告事故、伤害、医疗情况、犯罪活动、交通事件或学生行为事件。如果可能,应在事件发生后 24 小时内完成报告。

报告日期:2024 年 2 月 29 日

涉及人员

姓名:John Doe 地址:123 Main St

身份证明:■ 驾照号码 474921 □ 护照号码 ___________
□ 其他:____________________

电话:(678) 999-8212 电子邮件:john@gmail.com

事件

事件日期:2024 年 2 月 29 日 ■ 时间:9:01 ■ 上午 □ 下午

地点:第 2 街和第 3 街的拐角处

描述事件:红色汽车撞了蓝色汽车
_______________________________________________________
_______________________________________________________

伤害

是否有人受伤?□ 是 ■ 否

如果受伤,请描述伤势:________________________________________
_______________________________________________________________
_______________________________________________________________

证人

事件是否有证人?□ 是 ■ 否

如果是,请输入证人的姓名和联系信息:__________________________
_______________________________________________________________
_______________________________________________________________

第 1 页,共 2 页

复杂的文档问答

借助 Claude 3,我们可以超越简单的转录,询问有关非结构化文档中信息的具体问题。

Image(filename='../images/transcribe/page.jpeg')

jpeg

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": get_base64_encoded_image("../images/transcribe/page.jpeg")}},
            {"type": "text", "text": "对于现场支持,最关键的问题是什么?"}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
根据图像中显示的现场支持重要性层级金字塔,最关键的问题是产品质量/责任问题。这位于金字塔的最底层,表明它是现场支持处理的最关键或最重要的问题。

非结构化信息 -> JSON

让我们看看如何使用 Claude 将图像中的非结构化信息转换为结构化的 JSON 输出。

Image(filename='../images/transcribe/org_chart.jpeg')

jpeg

message_list = [
    {
        "role": 'user',
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": get_base64_encoded_image("../images/transcribe/org_chart.jpeg")}},
            {"type": "text", "text": "将此组织结构图转换为 JSON,指示谁向谁汇报。只输出 JSON,不要输出其他任何内容。"}
        ]
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=message_list
)
print(response.content[0].text)
{
  "President": {
    "name": "John Smith",
    "directReports": [
      {
        "name": "Susan Jones",
        "title": "VP Marketing",
        "directReports": [
          {
            "name": "Alice Johnson",
            "title": "Manager"
          },
          {
            "name": "Tim Moore",
            "title": "Manager"
          }
        ]
      },
      {
        "name": "Rachel Parker",
        "title": "VP Sales",
        "directReports": [
          {
            "name": "Michael Gross",
            "title": "Manager"
          },
          {
            "name": "Kim Dole",
            "title": "Manager"
          }
        ]
      },
      {
        "name": "Tom Allen",
        "title": "VP Production",
        "directReports": [
          {
            "name": "Kathy Roberts",
            "title": "Manager"
          },
          {
            "name": "Betsy Foster",
            "title": "Manager"
          }
        ]
      }
    ]
  }
}