站点图标 高效码农

AI文档处理神器:零代码搞定医疗文本分析与合同解析

DocETL:让 AI 把文档处理变成一场轻松的冒险

几个月前,我被一个项目逼得焦头烂额——一堆乱七八糟的医疗转录文本堆在面前,里面藏着药物名称和副作用等着我去挖。手动整理?简直是给自己找罪受,数据多得像山,格式乱得像麻。就在我快要崩溃的时候,DocETL 像个救命英雄跳了出来。这个由加州大学伯克利分校打造的 Python 神器,用 AI 的魔法帮我把这些杂乱无章的东西收拾得服服帖帖。今天,我要给你讲讲 DocETL 的故事,聊聊它怎么把枯燥的数据处理变成了一件有趣又高效的事儿。


DocETL 是个啥?你的贴心 AI 小助手

想象一下,你面前摆着一堆 PDF、邮件,或者是辩论记录,里面埋着你想要的关键信息——可能是合同条款、药物清单,或者某个辩论的重点。靠手去翻?那得累到吐血。市面上的工具要么笨得像块砖,要么复杂得让人头晕。DocETL 就不一样了,它就像一个聪明伶俐的小助手,用 AI 驱动的“流水线”把乱糟糟的文档理得清清楚楚。它专为需要啃文档的人设计,不管是法律文件、医疗记录,还是别的什么,都不在话下。

DocETL 有两把刷子:

  • DocWrangler:一个网页版的数据处理“游乐场”,让你随手试试水,玩出花样。
  • Python 包:硬核玩家专用,适合大规模作战,把数据处理自动化。

接下来,我带你看看这俩家伙是怎么救我于水火的。


DocWrangler:数据处理的“游乐场”

DocWrangler 是我的第一个“救星”,也是我最爱的小玩具。它就像一个实验台,你扔进去文件,敲几句指令,AI 立马给你变出结果。对我这种喜欢边试边摸索的人来说,简直是天赐的礼物。

怎么玩转 DocWrangler?简单到离谱

设置 DocWrangler 比泡杯咖啡还轻松,用 Docker 几分钟就搞定。Docker 是个容器化工具,能让你快速搭好环境。步骤如下:

第一步:装 Docker

没装 Docker 的朋友,去 docker.com 下个安装包,按指引走一遍,Mac、Windows、Linux 都行。

第二步:准备“魔法钥匙”

DocWrangler 需要连接 AI 模型,所以得有个 API 密钥。我用的是V4o 的密钥在 platform.openai.com 拿一个,填到 .env 文件里:

OPENAI_API_KEY=你的密钥
BACKEND_ALLOW_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
BACKEND_HOST=localhost
BACKEND_PORT=8000
BACKEND_RELOAD=True
FRONTEND_HOST=0.0.0.0
FRONTEND_PORT=3000
FRONTEND_DOCKER_COMPOSE_PORT=3031
BACKEND_DOCKER_COMPOSE_PORT=8081
TEXT_FILE_ENCODINGS=utf-8,latin1,cp1252,iso-8859-1

然后在 website 文件夹里再弄个 .env.local 文件:

OPENAI_API_KEY=sk-xxx
OPENAI_API_BASE=https://api.openai.com/v1
MODEL_NAME=gpt-4o-mini
NEXT_PUBLIC_BACKEND_HOST=localhost
NEXT_PUBLIC_BACKEND_PORT=8000
NEXT_PUBLIC_HOSTED_DOCWRANGLER=false

第三步:启动!

终端里敲几下:

git clone https://github.com/ucbepic/docetl.git
cd docetl
make docker

几分钟后,浏览器打开 http://localhost:3000,你就可以开始玩了。

收拾摊子

用完想清理?一句命令搞定:

make docker-clean

DocWrangler 的绝活:试错不心疼

DocWrangler 让我少走了多少弯路啊!比如,我扔进去一份医疗转录,敲一句:“挖出所有药物名称。” 几秒钟,名单就出来了。如果漏了啥,我马上改指令,比如“找出所有可能像药名的词”,调到满意为止。搞定后还能导出 YAML 文件,交给 Python 包去放大招。这感觉就像先搭个乐高模型,确定没问题再量产。


DocETL Python 包:大场面也能hold住

DocWrangler 让我找到感觉,但真要干活还得靠 Python 包。它能批量处理数据,把我在 DocWrangler 里试好的流程跑起来。比如,我有一堆医疗转录要提取药物和副作用,Python 包让我轻松到飞起。

怎么用?简单得像聊天

第一步:装上它

Python 3.10+ 就行,一句命令:

pip install docetl

第二步:密钥放好

跟上面一样,弄个 .env 文件:

OPENAI_API_KEY=你的密钥

第三步:写个“剧本”

DocETL 用 YAML 文件指挥,像写菜谱一样直白。这是我的医疗转录处理脚本:

dataset:
  name: medical_transcripts
  source: ./transcripts/*.txt
operations:
  - type: map
    name: extract_medications
    prompt: "列出转录文本中提到的所有药物。"
    output_schema:
      medications: list[str]
  - type: resolve
    name: resolve_medication_names
    input: extract_medications
    prompt: "标准化药物名称(比如把 'Tylenol' 改成 'Acetaminophen')。"
    output_schema:
      standardized_medications: list[str]
  - type: map
    name: summarize_side_effects
    input: resolve_medication_names
    prompt: "为每种药物总结转录文本中的副作用和用途。"
    output_schema:
      medication_summary:
        medication: str
        side_effects: str
        therapeutic_uses: str
output:
  destination: ./output/medication_summaries.json

这脚本干了三件事:挖药名、规范名字、总结用途和副作用,最后吐出个 JSON 文件。

第四步:开跑

终端里喊一声:

docetl run medical_pipeline.yaml

或者写个 Python 小程序:

from docetl import Pipeline
pipeline = Pipeline("medical_pipeline.yaml")
pipeline.run()

跑完后,./output/medication_summaries.json 里全是整齐的药物信息,看得我心满意足。

Python 包的硬实力:快到飞起

这家伙效率高得吓人,处理大堆数据都不带喘气的,还能搞定复杂的活儿,比如名字对齐(entity resolution),真实数据里超实用。更妙的是,它能无缝嵌进我的 Python 项目,工作流顺得像流水。


AWS Bedrock:AWS 粉的福音

要是你是 AWS 的铁粉,DocETL 还支持 Bedrock。先设置好 AWS 环境:

aws configure
make test-aws

然后用 Bedrock 模型跑 DocWrangler:

AWS_PROFILE=你的配置文件 AWS_REGION=你的区域 make docker

YAML 里指定模型,比如 bedrock.anthropic.claude-v2,AWS 用户有福了。


DocETL 凭啥这么牛?

我用过不少工具,但 DocETL 真有几招让我服气:

  • 聪明绝顶:把大任务拆成小块,AI 一步步搞定,准得不行。
  • 简单粗暴:YAML 写起来顺手,不会代码也能玩。
  • 免费好用:开源项目,GitHub 上 1.3k+ 星(截至 2024 年 11 月),伯克利背书够硬。
  • 百搭能手:合同、辩论、医疗,随你挑。

再秀一手:剖析辩论记录

DocETL 还能干啥?我拿它分析了辩论记录,YAML 长这样:

dataset:
  name: debate_transcripts
  source: ./debates/*.txt
operations:
  - type: map
    name: extract_themes
    prompt: "找出辩论记录中的关键主题和观点。"
    output_schema:
      themes: list[dict[theme: str, viewpoint: str]]
  - type: unnest
    name: flatten_themes
    input: extract_themes
    field: themes
    output_schema:
      theme: str
      viewpoint: str
output:
  destination: ./output/debate_themes.json

跑一下:

docetl run debate_pipeline.yaml

结果蹦出来主题,像“医疗改革”配上观点“支持全民医保”,长篇总结秒变精华。


快来试试 DocETL 吧!

想体验这波数据处理的革命?我的建议:

  1. 玩玩 DocWrangler:Docker 装好,上 http://localhost:3000 试试。
  2. 上手 Python 包pip install docetl,照着医疗例子跑一遍。
  3. 翻翻文档docetl.org 有教程和案例。
  4. 加入大部队:去 GitHub 点个星,聊聊你的故事。

DocETL 让我从文档的泥潭里爬出来,不管是医疗转录还是辩论记录,它都省了我大把时间。希望你也试试,感受下 AI 让数据处理变得多轻松有趣!

退出移动版