将非结构化数据(文本和图像)导入结构化表格
在与 Datasette 相同的环境中安装此插件。
datasette install datasette-extract
此插件需要一个 OpenAI API 密钥。
您可以使用 DATASETTE_SECRETS_OPENAI_API_KEY
环境变量来设置,或者配置 datasette-secrets 插件,允许用户输入自己的插件并将其加密保存在他们的数据库中。
以下是如何使用该环境变量启动 Datasette
DATASETTE_SECRETS_OPENAI_API_KEY="xxx" datasette data.db --root --create
# Now click or command-click the URL containing .../-/auth-token?token=...
- 将
xxx
替换为您的 OpenAI API 密钥 --root
标志会使 Datasette 输出一个链接,该链接可让您以 root 身份登录--create
标志将在data.db
SQLite 数据库文件不存在时创建它
如果您正在使用来自插件的其他模型,如果它们需要 API 密钥,您应该查阅这些 LLM 插件的文档以了解如何配置其 API 密钥。
默认情况下,所有支持 asyncio 和 schema 的 LLM 模型都将作为选项提供给用户。您可以使用 models
设置将其限制为模型的子集
plugins:
datasette-extract:
models:
- openai/gpt-4.1-nano
如果您只列出一个模型,用户在使用提取工具时将无法选择模型。
此插件提供以下功能
- 在数据库的操作齿轮菜单中选择“创建包含提取数据的表格”,从文本或图像中提取数据创建一个新表格
- 在表格的操作齿轮菜单中选择“将数据提取到此表格中”,将数据提取到现有表格中
创建表格时,您可以指定列名、类型并提供可选提示(例如日期使用“YYYY-MM-DD”)来影响数据提取的方式。
填充现有表格时,您可以提供提示并选择应填充哪些列。
文本输入可以直接粘贴到文本区域中。
将 PDF 或文本文件拖放到文本区域中,以用该文件的内容填充它。PDF 文件将提取其文本,但仅限于文件包含文本而非扫描图像的情况。
将单个图像拖放到文本区域中 - 或使用图像文件输入框选择它 - 以处理图像。
用户必须具有 datasette-extract
权限才能使用此工具。
为了创建表格,他们还需要 create-table
权限。
要向现有表格插入行,他们需要 insert-row
。
运行此命令将这些权限授予 root 用户
datasette . --root \
-s permissions.insert-row.id root \
-s permissions.create-table.id root \
-s permissions.datasette-extract.id root \
要在本地设置此插件,首先检出代码。然后创建一个新的虚拟环境
cd datasette-extract
python3 -m venv venv
source venv/bin/activate
现在安装依赖项和测试依赖项
pip install -e '.[test]'
运行测试
pytest
在开发中运行此插件的一个选项是使用此方法
DATASETTE_SECRETS_OPENAI_API_KEY="$(llm keys get openai)" \
datasette . --root --secret 1 \
-s permissions.insert-row.id root \
-s permissions.create-table.id root \
-s permissions.datasette-extract.id root \
-s plugins.datasette-extract.models '["openai/gpt-4.1-nano", "openai/gpt-4.1-mini"]' \
--internal internal.db --reload