logo
icon

Chat Nio Blob Service

📦 Out-Of-The-Box & Powerful File Parsing Service, support Text/Pdf/Docx/Pptx/Xlsx/Image/Audio parsing, support OCR, support Base64/Local/S3/R2/TG/MinIO storage.

平台Zeabur
部署次數18
發布者zmh-program
部署次數18
發布者zmh-program
建立於2024-07-23
模板內的服務
service icon
標籤
API

📦 Chat Nio Blob Service

File Service for Chat Nio

👉 More View: Github - Chat Nio Blob Service

Features

  • Out-of-the-Box: No External Dependencies Required & Support Vercel/Render One-Click Deployment
  • Multiple File Types: Support Text, Pdf, Docx, Excel, Image, Audio etc.
  • 📦 Multiple Storage Options: Base64, Local, S3, Cloudflare R2, Min IO, Telegram CDN etc.
  • 🔍 OCR Support: Extract Text from Image (Require Paddle OCR API)
  • 🔊 Audio Support: Convert Audio to Text (Require Azure Speech to Text Service)

Supported File Types

  • Text
  • Image (require vision models)
  • Audio (require Azure Speech to Text Service)
  • Docx (not support .doc)
  • Pdf
  • Pptx (not support .ppt)
  • Xlsx (support .xls)

API

POST /upload Upload a file

{
    "file": "[file]",
    "enable_ocr": false,
    "enable_vision": true,
    "save_all": false
}

Response

{
  "status": true,
  "type": "pdf",
  "content": "...",
  "error": ""
}

Environment Variables

1 🎨 General Config (Optional)

  • PDF_MAX_IMAGES: Max Images Extracted from a PDF File (Default: 10)
    • 0: Never Extract Images
    • -1: Extract All Images
    • other: Extract Top N Images
    • Tips: The extracted images will be treated as a normal image file and directly processed.
  • MAX_FILE_SIZE: Max Uploaded File Size MiB (Default: -1, No Limit)
    • Tips: Size limit is also depend on the server configuration (e.g. Nginx/Apache Config, Vercel Free Plan Limit 5MB Body Size)
  • CORS_ALLOW_ORIGINS: CORS Allow Origins (Default: *)
    • e.g.: http://localhost:3000,https://example.com

2 🔊 Audio Config (Optional)

  • AZURE_SPEECH_KEY: Azure Speech to Text Service Key (Required for Audio Support)
  • AZURE_SPEECH_REGION: Azure Speech to Text Service Region (Required for Audio Support)

3 🖼 Storage Config (Optional)

[!NOTE] Storage Config Apply to Image Files And Save All Option Only.

  1. ✨ No Storage (Default)

    • [x] No Storage Required & No External Dependencies
    • [x] Base64 Encoding/Decoding
    • [x] Do Not Store Anything
    • [x] Support Serverless Deployment Without Storage (e.g. Vercel)
    • [ ] No Direct URL Access (Base64 not support models like gpt-4-all)
  2. 📁 Local Storage

    • [ ] Require Server Environment (e.g. VPS, Docker)
    • [x] Support Direct URL Access
    • [x] Payless Storage Cost
    • Config:
      • set env STORAGE_TYPE to local (e.g. STORAGE_TYPE=local)
      • set env LOCAL_STORAGE_DOMAIN to your deployment domain (e.g. LOCAL_STORAGE_DOMAIN=http://blob-service.onrender.com)
      • if you are using Docker, you need to mount volume /app/static to the host (e.g. -v /path/to/static:/app/static)
  3. 🚀 AWS S3

    • [ ] Payment Storage Cost
    • [x] Support Direct URL Access
    • [x] China Mainland User Friendly
    • Config:
      • set env STORAGE_TYPE to s3 (e.g. STORAGE_TYPE=s3)
      • set env S3_ACCESS_KEY to your AWS Access Key ID
      • set env S3_SECRET_KEY to your AWS Secret Access Key
      • set env S3_BUCKET to your AWS S3 Bucket Name
      • set env S3_REGION to your AWS S3 Region
  4. 🔔 Cloudflare R2

    • [x] Free Storage Quota (10GB Storage & Zero Outbound Cost)
    • [x] Support Direct URL Access
    • Config (S3 Compatible):
      • set env STORAGE_TYPE to s3 (e.g. STORAGE_TYPE=s3)
      • set env S3_ACCESS_KEY to your Cloudflare R2 Access Key ID
      • set env S3_SECRET_KEY to your Cloudflare R2 Secret Access Key
      • set env S3_BUCKET to your Cloudflare R2 Bucket Name
      • set env S3_DOMAIN to your Cloudflare R2 Domain Name (e.g. https://<account-id>.r2.cloudflarestorage.com)
      • set env S3_DIRECT_URL_DOMAIN to your Cloudflare R2 Public URL Access Domain Name (Open Public URL Access, e.g. https://pub-xxx.r2.dev)
  5. 📦 Min IO

    • [x] Self Hosted
    • [x] Reliable & Flexible Storage
    • Config (S3 Compatible):
      • set env STORAGE_TYPE to s3 (e.g. STORAGE_TYPE=s3)
      • set env S3_SIGN_VERSION to s3v4 (e.g. S3_SIGN_VERSION=s3v4)
      • set env S3_ACCESS_KEY to your Min IO Access Key ID
      • set env S3_SECRET_KEY to your Min IO Secret Access Key
      • set env S3_BUCKET to your Min IO Bucket Name
      • set env S3_DOMAIN to your Min IO Domain Name (e.g. https://oss.example.com)
      • [Optional] If you are using CDN, you can set S3_DIRECT_URL_DOMAIN to your Min IO Public URL Access Domain Name (e.g. https://cdn-hk.example.com)
  6. Telegram CDN

    • [x] Free Storage (Rate Limit)
    • [x] Support Direct URL Access (China Mainland User Unfriendly)
    • [x] Limited File Type & Format
    • [x] Config:
      • set env STORAGE_TYPE to tg (e.g. STORAGE_TYPE=tg)

      • set env TG_ENDPOINT to your TG-STATE Endpoint (e.g. TG_ENDPOINT=https://tgstate.vercel.app)

      • [Optional] if you are using password authentication, you can set TG_PASSWORD to your TG-STATE Password

4 🔍 OCR Config (Optional)

[!NOTE] OCR Support is based on 👉 PaddleOCR API (✔ Self Hosted ✔ Open Source)

  • OCR_ENDPOINT Paddle OCR Endpoint
    • *e.g.: http://example.com:8000

Common Errors

  • Cannot Use Save All Options Without Storage Config:
    • This error occurs when you enable save_all option without storage config. You need to set STORAGE_TYPE to local or other storage type to use this option.
  • Trying to upload image with Vision disabled. Enable Vision or OCR to process image:
    • This error occurs when you disable enable_vision and enable_ocr at the same time. You need to enable at least one of them to process image files.
  • .ppt files are not supported, only .pptx files are supported:
    • This error occurs when you upload a old version of Office PowerPoint file. You need to convert it to .pptx format to process it.
  • .doc files are not supported, only .docx files are supported:
    • This error occurs when you upload a old version of Office Word file. You need to convert it to .docx format to process it.
  • File Size Limit Exceeded:
    • This error occurs when you upload a file that exceeds the MAX_FILE_SIZE limit. You need to reduce the file size to upload it.