text-extract-api

GitHub
3.1k 268 较难 1 次阅读 昨天MIT数据工具语言模型插件开发框架图像
AI 解读 由 AI 自动生成,仅供参考

text-extract-api 是一款强大的开源文档处理工具,旨在将 PDF、Word、PPTX 等各类文档或图片,高精度地转换为结构化的 Markdown 文本或 JSON 数据。它不仅能精准提取表格、数字和数学公式,还能利用大语言模型(如 Llama 3)自动修正 OCR 识别中的拼写错误,并支持一键移除文档中的个人敏感信息(PII),实现数据匿名化。

该工具主要解决了传统 OCR 技术在复杂版面还原、内容结构化以及隐私保护方面的痛点,让非结构化文档变得易于机器读取和分析。其最大的技术亮点在于完全本地化部署:基于 Docker Compose 集成 PyTorch OCR 引擎与 Ollama 大模型,所有数据处理均在用户自己的服务器或开发环境中完成,无需上传云端,充分保障数据安全。此外,它还内置了 Celery 分布式任务队列和 Redis 缓存机制,确保高效稳定的批量处理能力。

text-extract-api 非常适合需要处理大量文档数据的开发者、研究人员及企业技术团队使用。无论是构建知识库、自动化财务发票处理,还是进行医疗报告分析,它都能提供灵活且私密的解决方案。通过简单的命令行接口或 API 调用,用户即可轻松将其集成到现有的工作流中。

使用场景

某医疗数据研究团队需要批量处理数千份历史纸质病历的扫描 PDF,将其转化为可分析的结构化数据,同时必须严格去除患者姓名、身份证号等隐私信息以符合合规要求。

没有 text-extract-api 时

  • 人工成本高昂:依赖人工逐页录入或校对 OCR 结果,面对手写体医生处方和复杂医学公式时错误率极高,耗时数周。
  • 隐私泄露风险:缺乏自动化的敏感信息(PII)清洗机制,研究人员需手动排查每份文档,极易因疏忽导致患者隐私泄露。
  • 数据格式混乱:提取出的文本多为非结构化字符串,表格行列错位严重,后续导入数据库或进行统计分析前需编写大量复杂的清洗代码。
  • 云端合规顾虑:使用公共云 OCR 服务意味着将敏感医疗数据上传至第三方服务器,违反医院内部的数据不出域安全政策。

使用 text-extract-api 后

  • 自动化高精度提取:利用集成的 Llama3.2-Vision 和 EasyOCR 模型,自动识别并修正手写体及数学公式,将病历精准转换为 Markdown 或 JSON,效率提升数十倍。
  • 内置隐私脱敏:调用 Ollama 支持的本地大模型自动识别并移除姓名、证件号等 PII 信息,从源头确保数据合规,无需人工二次审查。
  • 结构化直接可用:直接输出带有完整表格结构和层级关系的 JSON 数据,研究团队可立即将其载入分析管道,省去了繁琐的后处理步骤。
  • 本地私有化部署:基于 Docker 和 Ollama 在本地服务器运行,所有数据处理均在内部网络完成,彻底杜绝了数据外传的安全隐患。

text-extract-api 通过“本地化智能 OCR+LLM 纠错脱敏”的一站式方案,让敏感文档的数字化处理既高效精准又安全合规。

运行环境要求

操作系统
  • Linux
  • macOS
GPU
  • 非必需
  • 支持 NVIDIA GPU (通过 docker-compose.gpu.yml),Mac Apple Silicon 需原生运行 (Docker 不支持)
  • 具体显存和 CUDA 版本未说明,但运行 Llama 3.2 Vision (90B) 等大模型通常需要高显存
内存

未说明 (建议 16GB+ 以运行大型视觉模型)

依赖
notes1. 核心依赖 Ollama 运行本地大模型 (如 Llama 3.2, MiniCPM-V),需预先安装 Ollama 并拉取对应模型。2. 必须安装 Docker 和 Docker Compose 以运行 Redis 和部分服务;若需完全原生运行或在使用 Mac Apple GPU 时,可跳过 Docker 但需手动启动 Celery Worker。3. macOS 用户需通过 Homebrew 安装 libmagic, poppler, ghostscript 等系统库。4. 支持多种 OCR 策略:默认包含 EasyOCR, MiniCPM-V, Llama Vision;Marker-PDF 因 GPL 许可需单独部署远程服务。5. 首次运行需下载较大的 AI 模型文件。
python3.x (通过 venv 管理,具体小版本未说明)
FastAPI
Celery
Redis
PyTorch
EasyOCR
Ollama
Llama 3.2 Vision
MiniCPM-V
libmagic
poppler
text-extract-api hero image

快速开始

text-extract-api

将任何图像、PDF 或 Office 文档以超高精度转换为 Markdown 文本 或 JSON 结构化文档,包括表格数据、数字或数学公式。

该 API 基于 FastAPI 构建,并使用 Celery 进行异步任务处理。Redis 用于缓存 OCR 结果。

hero doc extract

特性:

  • 无云/外部依赖:您只需 PyTorch 基础的 OCR(EasyOCR)+ Ollama,通过 docker-compose 打包并配置好;所有数据均在您的开发/服务器环境中处理,不会发送到外部。
  • PDF/Office 转 Markdown:采用多种 OCR 策略实现高精度转换,包括 llama3.2-visioneasyOCRminicpm-v,以及基于远程 URL 的策略,如 marker-pdf
  • PDF/Office 转 JSON:利用 Ollama 支持的模型(例如 LLama 3.1)进行转换。
  • LLM 改进 OCR 结果:LLama 在修正 OCR 文本中的拼写和文本问题方面表现优异。
  • 去除 PII:此工具可用于从文档中移除个人身份信息——请参阅 examples
  • 分布式队列处理:使用 Celery 实现。
  • 缓存:使用 Redis 缓存 OCR 结果,以便在 LLM 处理前快速访问。
  • 存储策略:可切换的存储策略(Google Drive、本地文件系统等)。
  • CLI 工具:用于提交任务和处理结果。

截图

将 MRI 报告转换为 Markdown + JSON。

python client/cli.py ocr_upload --file examples/example-mri.pdf --prompt_file examples/example-mri-2-json-prompt.txt

运行示例前,请先查看 入门指南

将 MRI 报告转换为 Markdown

将发票转换为 JSON 并移除 PII:

python client/cli.py ocr_upload --file examples/example-invoice.pdf --prompt_file examples/example-invoice-remove-pii.txt 

运行示例前,请先查看 入门指南

将发票转换为 JSON

入门指南

您可能希望直接在本地机器上运行该应用,用于开发目的,或者为了使用例如 Apple GPU(目前 Docker 尚不支持)。

前置条件

要使应用正常运行,请执行以下步骤:

下载并安装 Ollama 下载并安装 Docker

在远程主机上设置 Ollama

若要连接到外部 Ollama 实例,请设置环境变量:OLLAMA_HOST=http://address:port,例如:

OLLAMA_HOST=http(s)://127.0.0.1:5000

如果您想禁用本地 Ollama 模型,请使用环境变量 DISABLE_LOCAL_OLLAMA=1,例如:

DISABLE_LOCAL_OLLAMA=1 make install

注意:当本地 Ollama 被禁用时,请确保所需的模型已在外部实例上下载。

目前,DISABLE_LOCAL_OLLAMA 变量无法用于在 Docker 中禁用 Ollama。作为替代方案,您可以从 docker-compose.ymldocker-compose.gpu.yml 中移除 ollama 服务。

未来版本将支持在 Docker 环境中使用该变量。

克隆仓库

首先,克隆仓库并将当前目录切换到该目录:

git clone https://github.com/CatchTheTornado/text-extract-api.git
cd text-extract-api

使用 Makefile 设置

默认情况下,应用程序会创建一个 Python 虚拟环境.venv。您可以在本地设置中通过在运行脚本前添加 DISABLE_VENV=1 来禁用此功能:

DISABLE_VENV=1 make install 
DISABLE_VENV=1 make run 

手动设置

配置环境变量:

cp .env.localhost.example .env.localhost

您也可以直接使用默认值,通常足够了。设置完环境变量后,执行以下命令:

python3 -m venv .venv
source .venv/bin/activate
pip install -e .
chmod +x run.sh
run.sh

此命令将安装所有依赖项——包括 Redis(通过 Docker),因此严格来说,这并不是完全无需 Docker 的运行方式 :)。

(MAC) - 依赖项

brew update && brew install libmagic poppler pkg-config ghostscript ffmpeg automake autoconf

(Mac) - 您需要启动 Celery 工作进程:

source .venv/bin/activate && celery -A text_extract_api.celery_app worker --loglevel=info --pool=solo

之后,您就可以运行一些 CLI 命令,例如:

python client/cli.py ocr_upload --file examples/example-mri.pdf --ocr_cache --prompt_file=examples/example-mri-remove-pii.txt

扩展并行处理能力

若需同时运行多个任务以实现并发处理,请运行以下命令启动单个工作进程:

celery -A text_extract_api.tasks worker --loglevel=info --pool=solo & # 若要扩展并发处理能力,请根据所需并发进程的数量重复执行此命令

加入我们的 Discord 社区

如有任何疑问、求助或反馈,请 加入我们的 Discord 社区

文本提取策略

easyocr

Easy OCR 采用 Apache 许可证。它是一款通用 OCR 工具,支持 30 多种语言,尤其在英语识别方面表现优异。

默认启用。请使用 CLI 和 URL 参数中的 strategy=easyocr 来调用它。

minicpm-v

MiniCPM-V 是一种基于 Apache 许可证的 OCR 策略。

必须严格按照 MiniCPM 模型许可证.md 使用 MiniCPM-o/V 模型权重。

MiniCPM 的模型和权重对学术研究完全免费。填写 “问卷” 完成注册后,也可免费用于商业用途。

默认启用。请使用 CLI 和 URL 参数中的 strategy=minicpm_v 来调用它。

⚠️ 请务必先在 Ollama 中拉取模型
您需要在 Ollama 中拉取模型——使用以下命令:
python client/cli.py llm_pull --model minicpm-v
或者,如果您本地有 Ollama:ollama pull minicpm-v

llama_vision

LLama 3.2 Vision 策略根据 Meta 社区许可协议 授权。该模型支持多种语言,表现优异,但由于参数量高达 900 亿,因此可能是最慢的模型。

默认已启用。请使用 strategy=llama_vision CLI 和 URL 参数来调用此模型。顺便一提,它也是默认策略。

remote

一些 OCR 工具,例如 Marker,最先进的 PDF OCR,在超过 50 种语言上表现非常出色,包括对波兰语及其他通常较难识别的语言也有很高的准确度。

然而,marker-pdf 采用 GPL3 许可证授权,因此默认情况下并未包含在本应用中(因为我们受 MIT 许可证约束)。

这些模型的权重采用 CC-BY-NC-SA-4.0 许可证,但我将为以下组织免除该许可要求:最近 12 个月内总收入低于 500 万美元,且累计风险投资/天使轮融资总额也低于 500 万美元。此外,您还不得与 Datalab API 形成竞争关系。如果您希望解除 GPL 许可证的要求(采用双重许可)或在收入超过上述限制的情况下商业使用这些权重,请查看此处的选项。

要将其运行起来,您可以执行以下步骤:

mkdir marker-distribution # 此目录应位于 `text-extract-api` 文件夹之外!
cd marker-distribution
pip install marker-pdf
pip install -U uvicorn fastapi python-multipart
marker_server --port 8002

设置远程 API 地址:

注意:* 您可能在不同的端口或服务器上运行 marker_server,此时只需在启动 text-extract-api 服务器之前正确设置环境变量即可:

export REMOTE_API_URL=http://localhost:8002/marker/upload

注意:* 也可以通过 /config/strategies.yaml 文件设置该 URL。

运行 text-extract-api

make run

请使用 strategy=remote CLI 和 URL 参数来调用此功能。例如:

curl -X POST -H "Content-Type: multipart/form-data" -F "file=@examples/example-mri.pdf" -F "strategy=remote" -F "ocr_cache=true" -F "prompt=" -F "model=" "http://localhost:8000/ocr/upload"

我们通过远程 OCR 的 API 进行连接,以避免因源代码层面的直接集成而共享相同的 GPL3 许可证。

使用 Docker 入门

前置条件

  • Docker
  • Docker Compose

克隆仓库

git clone https://github.com/CatchTheTornado/text-extract-api.git
cd text-extract-api

使用 Makefile

您可以使用 make installmake run 命令来设置 text-extract-api 的 Docker 环境。下面列出了手动完成相同操作所需的步骤。

手动设置

在根目录下创建 .env 文件,并设置必要的环境变量。您可以以 .env.example 文件作为模板:

# Docker 实例的默认配置
cp .env.example .env

或者

# 本地运行的默认配置
cp .env.example.localhost .env

然后修改文件中的变量:

#APP_ENV=production # 将应用设置为生产模式,否则为开发模式并支持代码更改时自动重新加载
REDIS_CACHE_URL=redis://localhost:6379/1
STORAGE_PROFILE_PATH=./storage_profiles
LLAMA_VISION_PROMPT="你是一名 OCR,将图像转换为 Markdown 格式。"

# CLI 设置
OCR_URL=http://localhost:8000/ocr/upload
OCR_UPLOAD_URL=http://localhost:8000/ocr/upload
OCR_REQUEST_URL=http://localhost:8000/ocr/request
RESULT_URL=http://localhost:8000/ocr/result/
CLEAR_CACHE_URL=http://localhost:8000/ocr/clear_cache
LLM_PULL_API_URL=http://localhost:8000/llm_pull
LLM_GENERATE_API_URL=http://localhost:8000/llm_generate

CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0
OLLAMA_HOST=http://localhost:11434
APP_ENV=development  # 默认为开发模式

注意: 为了正确保存输出文件,您可能需要修改 storage_profiles/default.yaml,将默认存储路径调整为与 docker-compose.yml 中定义的卷路径一致。

构建并运行 Docker 容器

使用 Docker Compose 构建并运行容器:

docker-compose up --build

若需 GPU 支持,请运行:

docker-compose -f docker-compose.gpu.yml -p text-extract-api-gpu up --build

注意: 在 Mac 上,Docker 不支持 Apple 的 GPU。在这种情况下,您可以尝试不使用 Docker Compose 而直接运行应用程序,请参阅如何在本地运行并支持 GPU

这将启动以下服务:

  • FastAPI 应用程序:运行 FastAPI 应用。
  • Celery 工作进程:处理异步 OCR 任务。
  • Redis:缓存 OCR 结果。
  • Ollama:运行 Ollama 模型。

云端付费版

如果本地部署过于繁琐,请联系我们获取托管/云版本 的 text-extract-api,我们可以为您搭建并按使用量计费。

CLI 工具

注意: 在 Mac 上,您可能需要先创建一个虚拟 Python 环境:

python3 -m venv .venv
source .venv/bin/activate
# 现在您可以在虚拟环境中使用 `python` 和 `pip`。
pip install -e . # 安装主项目所需依赖

该项目包含一个用于与 API 交互的 CLI。要使其正常工作,请先执行以下命令:

cd client
pip install -e .

下载 LLama3.1 和 LLama3.2-vision 模型

您可以尝试测试 LLama 支持的各种模型

python client/cli.py llm_pull --model llama3.1
python client/cli.py llm_pull --model llama3.2-vision

这些模型是 text-extract-api 支持大多数功能所必需的。

上传文件进行 OCR(转换为 Markdown)

python client/cli.py ocr_upload --file examples/example-mri.pdf --ocr_cache

或者也可以使用:

python client/cli.py ocr_request --file examples/example-mri.pdf --ocr_cache

两者的区别在于,前者使用 ocr/upload 接口,以多部分表单数据形式上传文件;而后者则通过发送 Base64 编码的 JSON 数据来请求 ocr/request 接口,这种方式可能更适合较小的文件。

上传文件进行 OCR 处理(由 LLM 处理)

重要提示: 若要使用 LLM,您必须先运行 llm_pull 命令,以获取您的请求所需的特定模型。

例如,您需要运行以下命令:

python client/cli.py llm_pull --model llama3.1
python client/cli.py llm_pull --model llama3.2-vision

然后才能运行此特定的提示查询:

python client/cli.py ocr_upload --file examples/example-mri.pdf --ocr_cache --prompt_file=examples/example-mri-remove-pii.txt --language en

注意: language 参数用于 OCR 策略,以加载所选语言的模型权重。您可以指定多个语言,用逗号分隔:en,de,pl 等。

ocr 命令可以使用 storage_profiles 存储结果:

  • storage_profile:用于保存结果;默认使用 default 配置文件(./storage_profiles/default.yaml),如果为空则不保存文件。
  • storage_filename:输出文件名——基于存储配置文件中设置的 root_path 的相对路径,默认为 /storage 文件夹下的相对路径;支持动态格式化占位符:{file_name}{file_extension}{Y}{mm}{dd}——用于日期格式化,{HH}{MM}{SS}——用于时间格式化。

上传文件进行 OCR 处理(由 LLM 处理),并将结果存储到磁盘

python client/cli.py ocr_upload --file examples/example-mri.pdf --ocr_cache --prompt_file=examples/example-mri-remove-pii.txt  --storage_filename "invoices/{Y}/{file_name}-{Y}-{mm}-{dd}.md"

根据任务 ID 获取 OCR 结果

python client/cli.py result --task_id {your_task_id_from_upload_step}

列出按 storage_profile 归档的文件结果

python client/cli.py list_files 

若要使用特定的存储配置文件(例如 Google Drive),请运行:

python client/cli.py list_files  --storage_profile gdrive

加载按 storage_profile 归档的文件结果

python client/cli.py load_file --file_name "invoices/2024/example-invoice-2024-10-31-16-33.md"

删除按 storage_profile 归档的文件结果

python client/cli.py delete_file --file_name "invoices/2024/example-invoice-2024-10-31-16-33.md" --storage_profile gdrive

或对于默认配置文件(本地文件系统):

python client/cli.py delete_file --file_name "invoices/2024/example-invoice-2024-10-31-16-33.md" 

清除 OCR 缓存

python client/cli.py clear_cache

测试 LLama

python llm_generate --prompt "Your prompt here"

API 客户端

您可能希望使用专用的 API 客户端来使用 text-extract-api

Typescript

有一个专门针对 Typescript 的 API 客户端——text-extract-api-client,以及同名的 npm 包:

npm install text-extract-api-client

使用方法:

import { ApiClient, OcrRequest } from 'text-extract-api-client';
const apiClient = new ApiClient('https://api.doctractor.com/', 'doctractor', 'Aekie2ao');
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('prompt', '将文件转换为 JSON 并仅返回 JSON'); // 如果未提供,则不会进行 LLM 转换,仅执行 OCR
formData.append('strategy', 'llama_vision');
formData.append('model', 'llama3.1');
formData.append('ocr_cache', 'true');

apiClient.uploadFile(formData).then(response => {
    console.log(response);
});

端点

通过文件上传的 OCR 端点 / 多部分数据

  • URL: /ocr/upload
  • 方法: POST
  • 参数:
    • file: 待处理的 PDF、图像或 Office 文件。
    • strategy: 要使用的 OCR 策略(llama_visionminicpm_vremoteeasyocr)。请参阅 可用策略
    • ocr_cache: 是否缓存 OCR 结果(truefalse)。
    • prompt: 如果提供,则用于 Ollama 处理 OCR 结果。
    • model: 与 prompt 一起提供时,该模型将用于 LLM 处理。
    • storage_profile: 用于保存结果;默认使用 default 配置文件(./storage_profiles/default.yaml),如果为空则不保存文件。
    • storage_filename: 输出文件名——基于存储配置文件中设置的 root_path 的相对路径,默认为 /storage 文件夹下的相对路径;支持动态格式化占位符:{file_name}{file_extension}{Y}{mm}{dd}——用于日期格式化,{HH}{MM}{SS}——用于时间格式化。
    • language: OCR 用于加载语言权重的一个或多个语言代码(如 enen,pl,de)。

示例:

curl -X POST -H "Content-Type: multipart/form-data" -F "file=@examples/example-mri.pdf" -F "strategy=easyocr" -F "ocr_cache=true" -F "prompt=" -F "model=" "http://localhost:8000/ocr/upload" 

通过 JSON 请求的 OCR 端点

  • URL: /ocr/request
  • 方法: POST
  • 参数(JSON 主体):
    • file: Base64 编码的 PDF 文件内容。
    • strategy: 要使用的 OCR 策略(llama_visionminicpm_vremoteeasyocr)。请参阅 可用策略
    • ocr_cache: 是否缓存 OCR 结果(truefalse)。
    • prompt: 如果提供,则用于 Ollama 处理 OCR 结果。
    • model: 与 prompt 一起提供时,该模型将用于 LLM 处理。
    • storage_profile: 用于保存结果;默认使用 default 配置文件(/storage_profiles/default.yaml),如果为空则不保存文件。
    • storage_filename: 输出文件名——基于存储配置文件中设置的 root_path 的相对路径,默认为 /storage 文件夹下的相对路径;支持动态格式化占位符:{file_name}{file_extension}{Y}{mm}{dd}——用于日期格式化,{HH}{MM}{SS}——用于时间格式化。
    • language: OCR 用于加载语言权重的一个或多个语言代码(如 enen,pl,de)。

示例:

curl -X POST "http://localhost:8000/ocr/request" -H "Content-Type: application/json" -d '{
  "file": "<base64-encoded-file-content>",
  "strategy": "easyocr",
  "ocr_cache": true,
  "prompt": "",
  "model": "llama3.1",
  "storage_profile": "default",
  "storage_filename": "example.md"
}'

OCR 结果端点

  • URL: /ocr/result/{task_id}
  • 方法: GET
  • 参数
    • task_id: OCR 端点返回的任务 ID。

示例:

curl -X GET "http://localhost:8000/ocr/result/{task_id}"

清除 OCR 缓存端点

  • URL: /ocr/clear_cache
  • 方法: POST

示例:

curl -X POST "http://localhost:8000/ocr/clear_cache"

Ollama 终端点

  • URL: /llm/generate
  • 方法: POST
  • 参数:
    • prompt: 用于 Ollama 模型的提示。
    • model: 要查询的模型名称。

示例:

curl -X POST "http://localhost:8000/llm/generate" -H "Content-Type: application/json" -d '{"prompt": "您的提示在此", "model":"llama3.1"}'

列出存储文件:

  • URL: /storage/list
  • 方法: GET
  • 参数:
    • storage_profile: 用于列出文件的存储配置文件名称(默认值为 default)。

下载存储文件:

  • URL: /storage/load
  • 方法: GET
  • 参数:
    • file_name: 要从存储中加载的文件名。
    • storage_profile: 用于列出文件的存储配置文件名称(默认值为 default)。

删除存储文件:

  • URL: /storage/delete
  • 方法: DELETE
  • 参数:
    • file_name: 要从存储中删除的文件名。
    • storage_profile: 用于列出文件的存储配置文件名称(默认值为 default)。

存储配置文件

该工具可以使用不同的存储策略和存储配置文件自动保存结果。存储配置文件通过 YAML 配置文件在 /storage_profiles 中进行设置。

本地文件系统

strategy: local_filesystem
settings:
  root_path: /storage # 文件将被存储的根路径 - 在 Docker 文件中挂载一个合适的文件夹以匹配此路径
  subfolder_names_format: "" # 例如:by_months/{Y}-{mm}/
  create_subfolders: true

Google Drive

strategy: google_drive
settings:
## 如何启用 GDrive API:https://developers.google.com/drive/api/quickstart/python?hl=pl

  service_account_file: /storage/client_secret_269403342997-290pbjjlb06nbof78sjaj7qrqeakp3t0.apps.googleusercontent.com.json
  folder_id:

其中,service_account_file 是包含授权凭据的 JSON 文件。请参阅 此处 了解如何启用 Google Drive API 并准备此授权文件。

注意:服务账户与您用于 Google Workspace 的账户不同(文件不会在 UI 中可见)。

Amazon S3 - 云对象存储

strategy: aws_s3
settings:
  bucket_name: ${AWS_S3_BUCKET_NAME}
  region: ${AWS_REGION}
  access_key: ${AWS_ACCESS_KEY_ID}
  secret_access_key: ${AWS_SECRET_ACCESS_KEY}

AWS S3 访问密钥的要求

  1. 访问密钥的所有权
    访问密钥必须属于具有 S3 操作权限的 IAM 用户或角色。

  2. IAM 策略示例
    附加到用户或角色的 IAM 策略必须允许必要的操作。以下是一个授予 S3 存储桶访问权限的策略示例:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::your-bucket-name",
                    "arn:aws:s3:::your-bucket-name/*"
                ]
            }
        ]
    }
    

接下来,请在相应的 .env 文件(例如 .env、.env.localhost)中填写所需的 AWS 凭证:

AWS_ACCESS_KEY_ID=您的访问密钥 ID
AWS_SECRET_ACCESS_KEY=您的秘密访问密钥
AWS_REGION=您的区域
AWS_S3_BUCKET_NAME=您的存储桶名称

许可证

本项目采用 MIT 许可证授权。详情请参阅 LICENSE 文件。

联系方式

如有任何问题,请联系我们:info@catchthetornado.com

版本历史

v0.3.02025/04/29
v0.2.02025/01/18
v0.1.02025/01/15

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

149.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|昨天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|4天前
插件开发框架