AIGC宇宙 AIGC宇宙

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

译者 | 核子可乐审校 | 重楼如今AI虽已全面普及,但多数职场人士仍难以统一运用各类互不相关的工具:一会需要使用聊天机器人、一会需要将文本复制到摘要器内,再加上会议转录和翻译,将本应顺畅的工作流程拆分得零散琐碎。 所以问题来了:为什么不能把各项AI功能集中起来? 为此我决定构建单一Web门户,供用户随时上传文档、提问、获取摘要、转录会议内容、翻译文件,甚至从PDF中提取表格等。

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

译者 | 核子可乐

审校 | 重楼

如今AI虽已全面普及,但多数职场人士仍难以统一运用各类互不相关的工具:一会需要使用聊天机器人、一会需要将文本复制到摘要器内,再加上会议转录和翻译,将本应顺畅的工作流程拆分得零散琐碎。

所以问题来了:为什么不能把各项AI功能集中起来?

为此我决定构建单一Web门户,供用户随时上传文档、提问、获取摘要、转录会议内容、翻译文件,甚至从PDF中提取表格等。其功能不求花哨、只讲实用,旨在解决我们每天面临的实际问题。

下面我们将共同了解如何将整个项目拼凑起来,介绍技术选型理由,以及如何将其运行起来。不必担心,所有内容均为开源,且不涉及任何AI“黑话”。

这个门户能干啥?

  • 与数据对话:上传文档,用自然语言提问,直接获取答案(不只靠关键词匹配)。
  • 摘要:上传长报告或政策文件,快速获取简短清晰的摘要——若有需要,还可以自定义摘要方式。
  • 转录:上传会议录音,快速获得书面转录。
  • 翻译:将文档转换为其他语言,保留原始格式。
  • 提取:从PDF中抓取表格和关键数据,并下载为JSON或Excel格式。

不必在各类应用间往来切换,只需上传文件、选择功能,即可获得所需内容。

各项功能如何协同起效?

下面简单来看项目的整体架构:

  • 前端:React
  • 后端:FastAPI(Python)
  • 大模型和嵌入:Azure OpenAI
  • 向量数据库:Pinecone
  • 音频转录:Whisper(本地运行)
  • 翻译:Azure Translator
  • 文档提取:Azure Document Intelligence
  • 存储:本地或Azure Blob存储(演示中使用本地存储)
  • 认证:(生产环境可添加 Azure AD/OAuth)

各组件间的连接方式:

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

功能演示(附带图表及代码)

与数据对话

无需阅读全文,即可通过提问直接从PDF文件或者报告中获取答案,是不是很让人心动?这就是“与数据对话”功能。大家上传文档、用自然语言提出问题,大模型就能直接从文件内容中提取答案。这将为所有人节约时间——包括法律、财务、合规部门,乃至任何需要处理冗长文件的工作者。

如何实现

此门户会拆分并嵌入文档,将其存储在Pinecone当中,并使用Azure OpenAI回答用户输入的任何问题。

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

后端:用于上传文档的FastAPI端点

复制
# Python backend example
@app.post("/upload/")
async def upload_file(file: UploadFile = File(...)):
 contents = await file.read()
 text = contents.decode("utf-8", errors="ignore")
 upsert_document(text)
 return {"status": "uploaded"}

后端:用于聊天的FastAPI端点

复制
# Python backend for chat
@app.post("/chat/")
async def chat(query: str = Form(...)):
 matches = query_pinecone(query)
 context = " ".join([m['text'] for m in matches])
 answer = get_answer(query, context)
 return {"answer": answer}

其余后端代码请参见GitHub。

摘要

坦白讲,大多数商业文档都搞得太冗长。摘要功能将帮助我们从这些大文件中获取简短、清晰的摘要。我们甚至可以添加自定义提示词,例如“总结合规性关键风险”或“提供主要行动指标”。

如何实现

在上传文档之后,后端将内容及用户的提示词发送至Azure OpenAI,而后返回摘要内容——再无需通读全文。

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

后端:FastAPI摘要端点

复制
# Summarization endpoint
@app.post("/summarize/")
async def summarize(file: UploadFile = File(...), prompt: str = Form("Summarize this document:")):
 contents = await file.read()
 text = contents.decode("utf-8", errors="ignore")
 summary = summarize_text(text, prompt)
 return JSONResponse(content={"summary": summary})

详见React SummarizeForm组件。

音频转录

大家肯定都处理过会议或者电话录音……再听一遍真的让人崩溃。现在有了这项功能,只需上传音频或者视频文件,即可快速获取书面记录。

如何实现

音频上传完成后,后端会使用Whisper转录所有内容,而后将全文显示在浏览器内。

后端:FastAPI音频转录端点

复制
# Audio transcription endpoint
@app.post("/transcribe/")
async def transcribe(file: UploadFile = File(...)):
 audio_bytes = await file.read()
 transcript = transcribe_audio_file(audio_bytes, file.filename)
 return JSONResponse(content={"transcript": transcript})

TranscribeForm.js

语言翻译

全球团队往往需要跨语种协作,而文档翻译则速度极慢且耗费大量人力。现在大家可以上传任意文件、选定目标语言并快速获取翻译版本——连格式都几乎保持一致。

如何实现

上传文档、选定语言,后端会调用Azure Translator进行翻译,并将结果展示给用户。

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

后端:FastAPI翻译端点

复制
# Translation endpoint
@app.post("/translate/")
async def translate(
 file: UploadFile = File(...),
 to_language: str = Form(...)
):
 contents = await file.read()
 text = contents.decode("utf-8", errors="ignore")
 translated = fake_translate(text, to_language)
 return JSONResponse(content={"translated": translated})

TranslateForm.js

文档提取器

从PDF和表单中提取表格和键值数据一直是最让文员们抓狂的任务。不怕,现在可以交给AI搞定。

如何实现

上传PDF(或其他扫描文档),选择JSON或Excel格式,此门户将使用Azure Document Intelligence提取表格及键值对。结果可供随时下载。

简易实用项目攻略:如何创建集文档问答、摘要、转录、翻译与提取于一身的AI门户

后端:FastAPI提取端点

复制
# Document extractor endpoint
@app.post("/extract/")
async def extract(
 file: UploadFile = File(...),
 output_format: str = Form("json")
):
 contents = await file.read()
 filename = file.filename

 if output_format == "excel":
 xls_path = extract_tables_and_kv(contents, filename, output_format="excel")
 return FileResponse(xls_path, media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename="extracted_tables.xlsx")
 else:
 output = extract_tables_and_kv(contents, filename, output_format="json")
 return JSONResponse(content=output)

ExtractForm.js

如何运行这套门户

开源代码地址: github.com/sanjaybk7/AIPortal

  • 克隆repo: git clone https://github.com/sanjaybk7/AIPortal.git
  • 后端:进入 backend,设置Python、安装依赖项并运行FastAPI。
  • 前端:进入 frontend,安装依赖项并运行React。
  • 打开浏览器:访问 http://localhost:3000 并开始上传。

注意,这里需要使用Azure和Pinecone的API密钥,相关设置方法已在repo说明中提供。

总结

相信很多朋友跟我一样,已经厌倦了在不同AI工具间往来切换。通过这篇简短的攻略,咱们成功把多款现代AI工具集中起来,感兴趣的朋友不妨赶紧用起来!

原文标题:How I Built an AI Portal for Document Q and A, Summarization, Transcription, Translation, and Extraction,作者:Sanjay Krishnegowda

相关资讯

腾讯云上线DeepSeek全系API接口并打通联网搜索

腾讯云宣布完成对深度求索(DeepSeek)大模型的深度整合——正式上线DeepSeek-R1和V3原版模型的API接口,并创新性接入自研大模型知识引擎,同步开放联网搜索能力。 凭借腾讯云在推理并发和生成速率等方面的优化,用户可以获得更加稳定、安全、低门槛的使用体验。 开发者只需在云上简单三步即可实现API接口调用,并通过大模型知识引擎提供的文档解析、拆分、embedding、多轮改写等能力,灵活构建专属的AI服务。
2/8/2025 2:09:00 PM
AI在线

微信搜索接入DeepSeek大模型 称AI不会使用朋友圈聊天等信息

近日,微信宣布其搜索功能接入 DeepSeek-R1模型,目前处于灰度测试阶段。 部分用户在微信搜索框选择 AI 搜索时,可体验到 DeepSeek-R1提供的深度思考功能。 微信方面表示,引入大模型旨在提升搜索的智能化和精准度,更好地理解用户搜索意图,分析处理复杂查询。
2/19/2025 11:18:00 AM
AI在线

DeepSeek-R1 登顶 Hugging Face:以10000 赞力压 150 万个模型

今日凌晨,全球最大开源平台之一 Hugging Face 的首席执行官 Clement Delangue 在社交平台发文宣布,DeepSeek-R1在 Hugging Face 上获得了超过10000个赞,成为该平台近150万个模型中最受欢迎的大模型。 这一里程碑式的成就标志着 DeepSeek-R1在全球 AI 社区中的广泛认可与影响力。 DeepSeek-R1的崛起速度令人瞩目。
2/24/2025 9:30:00 AM
AI在线
testab