docreader/README.md
DocReader 是 WeKnora 项目中负责文档解析和处理的 gRPC 服务。它支持多种文档格式的读取、OCR 识别、多模态处理等功能。
在 docker-compose.yml 文件中,docreader 服务配置了以下环境变量:
docreader:
image: wechatopenai/weknora-docreader:${WEKNORA_VERSION:-latest}
environment:
- MINIO_ENDPOINT=minio:9000
- MINIO_PUBLIC_ENDPOINT=http://localhost:${MINIO_PORT:-9000}
- MINERU_ENDPOINT=${MINERU_ENDPOINT:-}
- MAX_FILE_SIZE_MB=${MAX_FILE_SIZE_MB:-}
minio:9000- MINIO_ENDPOINT=minio:9000 # Docker 网络内部地址
http://localhost:9000localhost 替换为实际的 IP 地址.env 文件中配置 MINIO_PORT 来自定义端口# .env 文件
MINIO_PORT=9000
- MINIO_PUBLIC_ENDPOINT=http://192.168.1.100:9000 # 使用实际 IP
# .env 文件
MINERU_ENDPOINT=http://mineru-service:8080
50 MB# .env 文件
MAX_FILE_SIZE_MB=100 # 允许最大 100MB 的文件
除了 docker-compose.yml 中已配置的变量外,DocReader 还支持以下环境变量(可根据需要添加):
DOCREADER_GRPC_MAX_WORKERS: gRPC 服务的最大工作线程数(默认:4)DOCREADER_GRPC_PORT: gRPC 服务监听端口(默认:50051)DOCREADER_MARKITDOWN_MAX_WORKERS: MarkItDown 解析的最大并发数(默认:1,设为 0 可关闭限流)DOCREADER_PDF_RENDER_MAX_WORKERS: 扫描 PDF 渲染为图片的最大并发数(默认:1,设为 0 可关闭限流)DOCREADER_PDF_RENDER_DPI: 扫描 PDF 渲染 DPI(默认:200)DOCREADER_PDF_JPEG_QUALITY: 扫描 PDF 输出 JPEG 质量(默认:90,范围会自动限制在 1-95)DocReader 自身不再内置 OCR 与 VLM 后端。扫描 PDF 会被渲染为 JPEG 图片后交由 Go App 侧调用 OCR/VLM 服务处理,相关配置请参考主项目文档。
DocReader 支持多种存储后端:
STORAGE_TYPE: 设置为 minioMINIO_ACCESS_KEY_ID: MinIO 访问密钥 ID(默认:minioadmin)MINIO_SECRET_ACCESS_KEY: MinIO 访问密钥(默认:minioadmin)MINIO_BUCKET_NAME: MinIO 存储桶名称(默认:WeKnora)MINIO_PATH_PREFIX: 文件路径前缀MINIO_USE_SSL: 是否使用 SSL(默认:false)STORAGE_TYPE: 设置为 cosCOS_SECRET_ID: COS 访问密钥 IDCOS_SECRET_KEY: COS 访问密钥COS_REGION: COS 区域COS_BUCKET_NAME: COS 存储桶名称COS_APP_ID: COS 应用 IDCOS_PATH_PREFIX: 文件路径前缀COS_ENABLE_OLD_DOMAIN: 是否使用旧域名(默认:true)STORAGE_TYPE: 设置为 ossOSS_ACCESS_KEY_ID: OSS 访问密钥 IDOSS_ACCESS_KEY_SECRET: OSS 访问密钥OSS_ENDPOINT: OSS 端点(如 oss-cn-hangzhou.aliyuncs.com)OSS_BUCKET_NAME: OSS 存储桶名称OSS_REGION: OSS 区域(如 cn-hangzhou)OSS_PATH_PREFIX: 文件路径前缀如果需要通过代理访问外部服务:
EXTERNAL_HTTP_PROXY: HTTP 代理地址EXTERNAL_HTTPS_PROXY: HTTPS 代理地址扫描 PDF 会被渲染为 JPEG 图片后交给 Go App 侧 OCR 处理。如果在导入多个大 PDF 时出现资源占用过高,
可以优先调低 DOCREADER_PDF_RENDER_MAX_WORKERS 或 DOCREADER_MARKITDOWN_MAX_WORKERS。
docreader:
environment:
- MINIO_ENDPOINT=minio:9000
- MINIO_PUBLIC_ENDPOINT=http://localhost:9000
- MAX_FILE_SIZE_MB=50
docreader:
environment:
- MINIO_ENDPOINT=minio:9000
- MINIO_PUBLIC_ENDPOINT=http://192.168.1.100:9000
- MINERU_ENDPOINT=http://mineru:8080
- MAX_FILE_SIZE_MB=100
docreader:
environment:
- STORAGE_TYPE=cos
- COS_SECRET_ID=your_secret_id
- COS_SECRET_KEY=your_secret_key
- COS_REGION=ap-guangzhou
- COS_BUCKET_NAME=your-bucket
- COS_APP_ID=your_app_id
- MAX_FILE_SIZE_MB=50
docreader:
environment:
- STORAGE_TYPE=oss
- OSS_ACCESS_KEY_ID=your_access_key_id
- OSS_ACCESS_KEY_SECRET=your_access_key_secret
- OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com
- OSS_BUCKET_NAME=your-bucket
- OSS_REGION=cn-hangzhou
- MAX_FILE_SIZE_MB=50
检查容器日志中是否存在依赖缺失或权限相关错误,必要时确认 MINIO_ENDPOINT / 存储相关环境变量是否正确配置。
检查 MINIO_PUBLIC_ENDPOINT 配置:
localhost,应使用实际 IP 地址检查 MAX_FILE_SIZE_MB 配置,确保限制足够大。同时需要确保前端和后端服务的文件大小限制保持一致。
DocReader 服务配置了健康检查:
healthcheck:
test: ["CMD", "grpc_health_probe", "-addr=localhost:50051"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
可以通过以下命令检查服务状态:
docker ps | grep docreader
docker logs WeKnora-docreader