test / README.md
simikkk's picture
Upload 4 files
f440d27 verified
|
Raw
History Blame Contribute Delete
3.65 kB

A newer version of the Gradio SDK is available: 6.22.0

Upgrade
metadata
title: OmniParse AI
emoji: 
colorFrom: purple
colorTo: indigo
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: true
license: mit

OmniParse AI — Invoice Processing SaaS

B2B SaaS pro automatické zpracování faktur. Nahraješ PDF/obrázek faktury, AI vytáhne vendor, čísla faktur, data, částky a DPH, a exportuješ do CSV/JSON/Excel nebo napojíš přes REST API.

Jak to spustit

  1. Nahraj app.py, requirements.txt, packages.txt a tento README.md do HuggingFace Space se SDK Gradio.
  2. V Settings → Variables and Secrets nastav secrets podle tabulky níže.
  3. Pin Space (⋯ → Pin this Space), ať nespí.

Secrets

Secret Popis Povinné?
HF_TOKEN HuggingFace token pro fallback AI (Mistral-7B) Doporučeno
GROQ_API_KEY Primární AI extrakce (Llama 3.1 přes Groq) Ano
SUPABASE_URL URL Supabase projektu Ano (jinak SQLite fallback)
SUPABASE_KEY anon public key Supabase Ano (jinak SQLite fallback)
GOOGLE_VISION_KEY Google Cloud Vision OCR Volitelné
STRIPE_SECRET_KEY Stripe secret key (test/live) Pro platby
STRIPE_PRICE_BASIC Stripe Price ID pro Basic plán Pro platby
STRIPE_PRICE_PRO Stripe Price ID pro Pro plán Pro platby
STRIPE_PRICE_ENTERPRISE Stripe Price ID pro Enterprise plán Pro platby
APP_URL Veřejná URL Space (pro Stripe redirect) Pro platby

Aplikace se nikdy nezhroutí kvůli chybějícímu secretu — každá vrstva má fallback:

  • Bez GROQ_API_KEY → zkusí HF Inference API → pak regex parser.
  • Bez SUPABASE_URL/KEY → přepne na lokální SQLite (omniparse.db), data nejsou perzistentní mezi restarty Space.
  • Bez GOOGLE_VISION_KEY → jen Tesseract OCR.
  • Bez STRIPE_SECRET_KEY → tlačítko Upgrade zobrazí instrukce místo Checkout linku.

Supabase schéma

Pokud používáš Supabase, spusť v SQL Editor tento skript před prvním spuštěním appky:

CREATE TABLE users (
    id          BIGSERIAL PRIMARY KEY,
    email       TEXT UNIQUE NOT NULL,
    name        TEXT NOT NULL,
    password    TEXT NOT NULL,
    plan        TEXT NOT NULL DEFAULT 'free',
    stripe_cid  TEXT,
    api_key     TEXT,
    created_at  TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE sessions (
    token       TEXT PRIMARY KEY,
    user_id     BIGINT NOT NULL REFERENCES users(id),
    expires_at  TIMESTAMPTZ NOT NULL
);

CREATE TABLE invoices (
    id           BIGSERIAL PRIMARY KEY,
    user_id      BIGINT NOT NULL REFERENCES users(id),
    filename     TEXT NOT NULL,
    vendor       TEXT,
    inv_number   TEXT,
    inv_date     TEXT,
    due_date     TEXT,
    amount       NUMERIC(12,2),
    vat_amount   NUMERIC(12,2),
    total        NUMERIC(12,2),
    currency     TEXT DEFAULT 'USD',
    status       TEXT DEFAULT 'done',
    is_duplicate BOOLEAN DEFAULT FALSE,
    confidence   NUMERIC(4,3),
    raw_json     JSONB,
    created_at   TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_invoices_user_month ON invoices(user_id, created_at);

Demo účet

Při prvním startu se automaticky vytvoří:

  • Email: demo@omniparse.ai
  • Heslo: demo1234
  • Plán: Pro

Poznámky k platbám

Stripe integrace zde funguje bez webhooků — po návratu ze Stripe Checkout uživatel v záložce "⚡ Upgrade" vloží session_id z URL a klikne "Ověřit platbu", což zavolá stripe.checkout.Session.retrieve() a upgraduje plán v DB. Pro produkční nasazení doporučujeme doplnit skutečný webhook endpoint, tahle verze je zjednodušená podle původního zadání ("bez webhooků").