XteVision 发票提取器是什么?适合哪些用户?
XteVision 发票提取器是一个 独立的 Node.js 服务器,用于从 中国发票 PDF 中提取结构化数据,并将结果保存为 CSV 文件。该版本可独立运行——无需 ComfyUI,因此可在任何装有 Node.js 的机器上部署,并可选地配备 Ollama 视觉模型。
qwen2.5vl:latest)进行智能字段提取从发票 PDF 到 CSV 输出的数据流
┌─────────────────────────────────────────────────────────────┐ │ XteVision 发票提取器 │ ├─────────────────────────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ PDF │──▶│ 二维码 │──▶│ Ollama │──▶│ CSV │ │ │ │处理器 │ │ 解码器 │ │ 提取器 │ │ 写入器 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ 发票数据合并器 │ │ │ │ (二维码数据 = 金额与编号的标准真值) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
该服务器专为 自托管、独立运行而设计:
OLLAMA_URL)独立版本能够做什么
将发票 PDF 转化为高分辨率图像,并通过 Tesseract OCR(中文 + 英文)提取文本。
读取中国税务二维码,作为金额和发票号的标准真值。
Ollama 视觉模型提取公司名称、税率、产品类型等结构化字段。
输出支持中文、兼容 Excel 的 UTF-8 BOM CSV 文件。
支持拖拽,可实现单张或基于文件夹的批量处理。
单次请求即可处理整个文件夹中的发票,并将结果合并为一个 CSV。
安装前需要准备软件和系统包
qwen2.5vl:latest)# 安装 Homebrew 包
brew install tesseract tesseract-lang poppler
# 安装中文语言数据
brew install tesseract-lang
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 拉取视觉模型
ollama pull qwen2.5vl:latest
# 安装系统包
sudo apt-get update
sudo apt-get install -y tesseract-ocr tesseract-ocr-chi-sim poppler-utils
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 拉取视觉模型
ollama pull qwen2.5vl:latest
# 通过 Chocolatey 安装
choco install tesseract poppler
# 或从以下地址下载:
# Tesseract: https://github.com/UB-Mannheim/tesseract/wiki
# Poppler: https://blog.alivate.com.au/poppler-windows/
# 从 https://ollama.com 安装 Ollama
ollama pull qwen2.5vl:latest
让服务器在你的机器上运行
# 进入项目目录
cd XteVision-standalone
# 安装依赖
npm install
# 复制环境配置
cp .env.example .env
# 根据你的环境编辑 .env
# 特别是当 Ollama 运行于其他主机时,需设置 OLLAMA_URL
# 启动服务器
npm start
# 或在开发模式下自动重载
npm run dev
服务器将启动于 http://localhost:3000。
.env 中配置的 OLLAMA_URL 地址访问,并且所选视觉模型已安装。.env 文件中的运行时设置
编辑 .env 文件以匹配你的部署。支持以下键:
| 键 | 默认值 | 说明 |
|---|---|---|
| PORT | 3000 | HTTP 服务器端口 |
| UPLOAD_DIR | ./uploads | 上传发票的目录 |
| OUTPUT_DIR | ./output | 生成 CSV 文件的目录 |
| OLLAMA_URL | http://localhost:11434 | Ollama 服务的基础 URL |
| OLLAMA_MODEL | qwen2.5vl:latest | 用于提取的视觉模型 |
| DPI | 300 | PDF 转图像的分辨率 |
| MAX_FILE_SIZE | 52428800 | 最大上传大小(字节,50 MB) |
API 路由及其用途
| 接口 | 方法 | 用途 |
|---|---|---|
| /api/health | GET | 健康检查 |
| /api/models | GET | 列出可用的 Ollama 模型 |
| /api/process | POST | 处理单张发票文件 |
| /api/process-folder | POST | 处理文件夹中的发票 |
| /api/files | GET | 列出输出的 CSV 文件 |
| /api/download/:filename | GET | 下载 CSV 文件 |
处理单张发票:
curl -X POST http://localhost:3000/api/process \
-F "invoice=@/path/to/invoice.pdf" \
-F "model=qwen2.5vl:latest" \
-F "filenamePrefix=invoice_data"
处理文件夹中的发票:
curl -X POST http://localhost:3000/api/process-folder \
-H "Content-Type: application/json" \
-d '{
"folderPath": "/path/to/invoices",
"model": "qwen2.5vl:latest",
"filenamePrefix": "batch_invoices"
}'
从图像到 CSV 的提取流程
| 字段 | 说明 |
|---|---|
| 流水号 | 流水号 |
| 月份 | 月份 |
| 收票日期 | 发票日期(YYYY-MM-DD) |
| 公司名称 | 公司名称(卖方) |
| 产品内容 | 产品/服务描述 |
| 未税金额 | 未税金额 |
| 税额 | 税额 |
| 金额合计 | 金额合计 |
| 增值税 (%) | 增值税税率百分比 |
| 附件数 | 附件数量 |
| 发票号码 | 发票号码 |
| 经办人 | 经办人 |
| 状态 | 状态 |
| 付款日期 | 付款日期 |
| 备注 | 备注 |
| source_file | 源 PDF 文件名 |
常见问题与解决方案
# 检查 Ollama 是否正在运行
ollama list
# 检查 Ollama API
curl http://localhost:11434/api/tags
# 若使用远程 Ollama,请在 .env 中设置 OLLAMA_URL
OLLAMA_URL=http://192.168.1.100:11434
# 检查 Tesseract 安装
tesseract --version
# 列出可用语言
tesseract --list-langs
# 若缺少中文语言数据:
# Ubuntu/Debian:
sudo apt-get install tesseract-ocr-chi-sim
# macOS:
brew install tesseract-lang
# 确保已安装 poppler
# Ubuntu/Debian:
sudo apt-get install poppler-utils
# macOS:
brew install poppler
独立版本 vs. ComfyUI 版本
| 功能 | ComfyUI 版本 | 独立版本 |
|---|---|---|
| 依赖 | ComfyUI + PyTorch | 仅需 Node.js |
| 配置复杂度 | 高 | 低 |
| 内存占用 | 高(GPU) | 低(CPU) |
| 性能 | GPU 加速 | GPU 加速,可回退到 CPU |
| 部署 | 需要 ComfyUI | 独立部署 |
| API | ComfyUI 节点 | REST API |