From 11de2d21754b1a2b76512f1195674c2473975ee4 Mon Sep 17 00:00:00 2001 From: "kai.t@apactech.io" Date: Thu, 25 Jun 2026 06:47:35 +0000 Subject: [PATCH] =?UTF-8?q?Initial=20commit=20=E2=80=94=20MarkItDown=20vs?= =?UTF-8?q?=20Docling=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FastAPI microservices: MarkItDown + Docling với async SQLAlchemy - Caddy reverse proxy same-origin (no CORS) - Bootstrap 5 frontend với marked.js rendering - LLM settings card: Ollama URL, model select từ API, cleanup model - POST /cleanup endpoint với AI làm đẹp Markdown - GET /models fetch danh sách model từ Ollama - Runtime LLM re-init không cần restart container - PYTHONDONTWRITEBYTECODE + .dockerignore Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 7 + .gitignore | 12 + docker-compose.yml | 124 +++ docling-service/.dockerignore | 4 + docling-service/Dockerfile | 21 + .../app/controllers/ConvertController.py | 122 +++ docling-service/app/database.py | 20 + docling-service/app/models/ConvertModel.py | 51 ++ .../app/services/DoclingService.py | 197 +++++ docling-service/main.py | 29 + docling-service/requirements.txt | 7 + example/1.pdf | Bin 0 -> 123050 bytes frontend/Caddyfile | 19 + frontend/index.html | 822 ++++++++++++++++++ markitdown-service/.dockerignore | 4 + markitdown-service/Dockerfile | 20 + .../app/controllers/ConvertController.py | 107 +++ markitdown-service/app/database.py | 21 + markitdown-service/app/models/ConvertModel.py | 42 + .../app/services/MarkitdownService.py | 153 ++++ markitdown-service/main.py | 24 + markitdown-service/requirements.txt | 8 + 22 files changed, 1814 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 docker-compose.yml create mode 100644 docling-service/.dockerignore create mode 100644 docling-service/Dockerfile create mode 100644 docling-service/app/controllers/ConvertController.py create mode 100644 docling-service/app/database.py create mode 100644 docling-service/app/models/ConvertModel.py create mode 100644 docling-service/app/services/DoclingService.py create mode 100644 docling-service/main.py create mode 100644 docling-service/requirements.txt create mode 100644 example/1.pdf create mode 100644 frontend/Caddyfile create mode 100644 frontend/index.html create mode 100644 markitdown-service/.dockerignore create mode 100644 markitdown-service/Dockerfile create mode 100644 markitdown-service/app/controllers/ConvertController.py create mode 100644 markitdown-service/app/database.py create mode 100644 markitdown-service/app/models/ConvertModel.py create mode 100644 markitdown-service/app/services/MarkitdownService.py create mode 100644 markitdown-service/main.py create mode 100644 markitdown-service/requirements.txt diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8aa5d18 --- /dev/null +++ b/.env.example @@ -0,0 +1,7 @@ +POSTGRES_USER=admin +POSTGRES_PASSWORD=admin +POSTGRES_DB=markitdown + +# Optional — Ollama LLM integration +# OLLAMA_BASE_URL=https://chat-ai.nswteam.net/ollama/v1 +# OLLAMA_MODEL=llava:7b diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b229342 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.env +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +*.egg-info/ +dist/ +build/ +db/data/ +*.db +*.sqlite diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..42ac8ec --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,124 @@ +# ============================================================ +# AI Markdown Demo — MarkItDown vs Docling +# ============================================================ +# Naming convention: - +# +# ui :8484 — Comparison UI (nginx) +# api-markitdown:8282 — MarkItDown API (Microsoft) +# api-docling :8383 — Docling API (IBM) +# db-markitdown :5432 — PostgreSQL for markitdown +# db-docling :— — PostgreSQL for docling (internal only) +# db-admin :5050 — Adminer +# ============================================================ + +x-healthcheck-defaults: &healthcheck-defaults + interval: 10s + timeout: 5s + retries: 5 + +x-service-defaults: &service-defaults + restart: unless-stopped + networks: + - app-network + +# ========================== +# Services +# ========================== +services: + + # --- UI layer --------------------------------------------------- + ui: + image: caddy:alpine + <<: *service-defaults + ports: + - "8484:80" + volumes: + - ./frontend/Caddyfile:/etc/caddy/Caddyfile:ro + - ./frontend:/srv:ro + + # --- API layer -------------------------------------------------- + api-markitdown: + build: + context: ./markitdown-service + <<: *service-defaults + ports: + - "8282:8000" + env_file: .env + environment: + DATABASE_URL: postgresql://${POSTGRES_USER:-admin}:${POSTGRES_PASSWORD:-admin}@db-markitdown:5432/${POSTGRES_DB:-markitdown} + OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} + OLLAMA_MODEL: ${OLLAMA_MODEL:-llava} + depends_on: + db-markitdown: + condition: service_healthy + + api-docling: + build: + context: ./docling-service + <<: *service-defaults + ports: + - "8383:8000" + env_file: .env + environment: + DATABASE_URL: postgresql://${POSTGRES_USER:-admin}:${POSTGRES_PASSWORD:-admin}@db-docling:5432/docling + OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} + OLLAMA_MODEL: ${OLLAMA_MODEL:-llava} + depends_on: + db-docling: + condition: service_healthy + + # --- Database layer --------------------------------------------- + db-markitdown: + image: postgres:16-alpine + <<: *service-defaults + env_file: .env + environment: + POSTGRES_DB: ${POSTGRES_DB:-markitdown} + POSTGRES_USER: ${POSTGRES_USER:-admin} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-admin} + volumes: + - db_markitdown_data:/var/lib/postgresql/data + - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro + ports: + - "5432:5432" + healthcheck: + <<: *healthcheck-defaults + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-admin} -d ${POSTGRES_DB:-markitdown}"] + + db-docling: + image: postgres:16-alpine + <<: *service-defaults + env_file: .env + environment: + POSTGRES_DB: docling + POSTGRES_USER: ${POSTGRES_USER:-admin} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-admin} + volumes: + - db_docling_data:/var/lib/postgresql/data + - ./db/init_docling.sql:/docker-entrypoint-initdb.d/init.sql:ro + healthcheck: + <<: *healthcheck-defaults + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-admin} -d docling"] + + # --- Admin layer ------------------------------------------------ + db-admin: + image: adminer:4.8.1 + <<: *service-defaults + ports: + - "5050:8080" + environment: + ADMINER_DEFAULT_SERVER: db-markitdown + depends_on: + db-markitdown: + condition: service_healthy + +# ========================== +# Infrastructure +# ========================== +networks: + app-network: + driver: bridge + +volumes: + db_markitdown_data: + db_docling_data: diff --git a/docling-service/.dockerignore b/docling-service/.dockerignore new file mode 100644 index 0000000..77de465 --- /dev/null +++ b/docling-service/.dockerignore @@ -0,0 +1,4 @@ +__pycache__ +*.pyc +*.pyo +.env diff --git a/docling-service/Dockerfile b/docling-service/Dockerfile new file mode 100644 index 0000000..0f4d282 --- /dev/null +++ b/docling-service/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.11-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +RUN apt-get update && apt-get install -y \ + libgl1 libglib2.0-0 libgomp1 \ + poppler-utils tesseract-ocr \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY main.py . +COPY app/ ./app/ + +EXPOSE 8000 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docling-service/app/controllers/ConvertController.py b/docling-service/app/controllers/ConvertController.py new file mode 100644 index 0000000..6df3183 --- /dev/null +++ b/docling-service/app/controllers/ConvertController.py @@ -0,0 +1,122 @@ +from fastapi import APIRouter, UploadFile, File, Depends, Query +from sqlalchemy.ext.asyncio import AsyncSession +from app.models.ConvertModel import ConvertResponse, HealthResponse, ConversionRecord +from app.services import DoclingService as docling_service +from app.database import get_db +from pydantic import BaseModel + +router = APIRouter() + +class SettingsRequest(BaseModel): + ollama_base_url: str | None = None + ollama_model: str = "llava" + cleanup_model: str | None = None + +class SettingsResponse(BaseModel): + llm_enabled: bool + ollama_base_url: str | None + ollama_model: str + cleanup_model: str | None = None + default_prompt: str | None = None + +SUPPORTED_INPUT_FORMATS = sorted([ + "pdf", "docx", "xlsx", "pptx", + "html", "htm", "jpg", "jpeg", "png", + "tiff", "tif", "bmp", "md", "txt", "asciidoc", "adoc" +]) + +SUPPORTED_OUTPUT_FORMATS = ["markdown", "json", "html", "text"] + + +@router.get("/settings", response_model=SettingsResponse) +def get_settings(): + return SettingsResponse( + llm_enabled=docling_service.LLM_ACTIVE, + ollama_base_url=docling_service.OLLAMA_BASE_URL, + ollama_model=docling_service.OLLAMA_MODEL, + cleanup_model=docling_service.CLEANUP_MODEL or None, + default_prompt=docling_service.DEFAULT_ENRICH_PROMPT, + ) + +@router.post("/settings", response_model=SettingsResponse) +def update_settings(req: SettingsRequest): + docling_service._init_llm(req.ollama_base_url or None, req.ollama_model) + docling_service.CLEANUP_MODEL = req.cleanup_model or "" + return SettingsResponse( + llm_enabled=docling_service.LLM_ACTIVE, + ollama_base_url=docling_service.OLLAMA_BASE_URL, + ollama_model=docling_service.OLLAMA_MODEL, + cleanup_model=docling_service.CLEANUP_MODEL or None, + default_prompt=docling_service.DEFAULT_ENRICH_PROMPT, + ) + +@router.get("/health", response_model=HealthResponse) +def health(): + from app.services.DoclingService import LLM_ACTIVE, OLLAMA_MODEL + ocr = "tesseract" if _ocr_available() else "none" + return HealthResponse( + status="ok", + supported_formats=SUPPORTED_INPUT_FORMATS, + output_formats=SUPPORTED_OUTPUT_FORMATS, + llm_enabled=LLM_ACTIVE, + llm_model=OLLAMA_MODEL if LLM_ACTIVE else None, + ocr_engine=ocr, + ) + + +def _ocr_available() -> bool: + import shutil + return shutil.which("tesseract") is not None + + +@router.post("/convert", response_model=ConvertResponse) +async def convert( + file: UploadFile = File(...), + output_format: str = Query(default="markdown", description="Output format: markdown | json | html | text"), + use_llm: bool = Query(default=True, description="Run LLM enrichment on extracted text"), + llm_prompt: str | None = Query(default=None, description="Custom system prompt for LLM enrichment"), + db: AsyncSession = Depends(get_db), +): + record = await docling_service.convert_file(file, db, output_format, use_llm=use_llm, llm_prompt=llm_prompt) + return ConvertResponse( + id=record.id, + filename=record.filename, + output_format=record.output_format, + content=record.content, + page_count=record.page_count, + llm_enabled=record.llm_enabled, + ) + + +@router.get("/conversions/{conversion_id}", response_model=ConvertResponse) +async def get_conversion(conversion_id: int, db: AsyncSession = Depends(get_db)): + record = await docling_service.get_conversion(conversion_id, db) + return ConvertResponse( + id=record.id, + filename=record.filename, + output_format=record.output_format, + content=record.content, + page_count=record.page_count, + llm_enabled=record.llm_enabled, + ) + + +@router.get("/history", response_model=list[ConversionRecord]) +async def history(limit: int = 20, db: AsyncSession = Depends(get_db)): + records = await docling_service.get_history(db, limit) + return [ + ConversionRecord( + id=r.id, + filename=r.filename, + file_type=r.file_type, + output_format=r.output_format, + page_count=r.page_count, + created_at=str(r.created_at), + ) + for r in records + ] + + +@router.delete("/conversions/{conversion_id}") +async def delete_conversion(conversion_id: int, db: AsyncSession = Depends(get_db)): + return await docling_service.delete_conversion(conversion_id, db) diff --git a/docling-service/app/database.py b/docling-service/app/database.py new file mode 100644 index 0000000..83f045a --- /dev/null +++ b/docling-service/app/database.py @@ -0,0 +1,20 @@ +import os +from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession +from sqlalchemy.orm import sessionmaker, DeclarativeBase + +DATABASE_URL = os.getenv("DATABASE_URL", "postgresql+asyncpg://admin:secret@db:5432/docling") + +DATABASE_URL = DATABASE_URL.replace("postgresql://", "postgresql+asyncpg://") + +engine = create_async_engine(DATABASE_URL, echo=False) + +AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + + +class Base(DeclarativeBase): + pass + + +async def get_db(): + async with AsyncSessionLocal() as session: + yield session diff --git a/docling-service/app/models/ConvertModel.py b/docling-service/app/models/ConvertModel.py new file mode 100644 index 0000000..3ebe29d --- /dev/null +++ b/docling-service/app/models/ConvertModel.py @@ -0,0 +1,51 @@ +from typing import Optional +from pydantic import BaseModel +from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, func +from app.database import Base + + +class Conversion(Base): + __tablename__ = "conversions" + + id = Column(Integer, primary_key=True, index=True) + filename = Column(String(255), nullable=False) + file_type = Column(String(50)) + output_format = Column(String(20), default="markdown") + content = Column(Text) + page_count = Column(Integer, nullable=True) + llm_enabled = Column(Boolean, default=False) + created_at = Column(DateTime, server_default=func.now()) + + +class ConvertResponse(BaseModel): + id: int + filename: str + output_format: str + content: str + page_count: Optional[int] = None + llm_enabled: bool = False + + class Config: + from_attributes = True + + +class ConversionRecord(BaseModel): + id: int + filename: str + file_type: Optional[str] = None + output_format: str + page_count: Optional[int] = None + llm_enabled: bool = False + created_at: str + + class Config: + from_attributes = True + + +class HealthResponse(BaseModel): + status: str + supported_formats: list[str] + output_formats: list[str] + llm_enabled: bool = False + llm_model: Optional[str] = None + ocr_engine: str = "none" diff --git a/docling-service/app/services/DoclingService.py b/docling-service/app/services/DoclingService.py new file mode 100644 index 0000000..6ec787b --- /dev/null +++ b/docling-service/app/services/DoclingService.py @@ -0,0 +1,197 @@ +import os +import re +import json +import tempfile +import logging +from fastapi import UploadFile, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select +from docling.document_converter import DocumentConverter, PdfFormatOption +from docling.datamodel.pipeline_options import PdfPipelineOptions +from docling.datamodel.base_models import InputFormat +from app.models.ConvertModel import Conversion + +logger = logging.getLogger(__name__) + +import openai as _openai + +OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL") or None +OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "llava") +CLEANUP_MODEL = os.getenv("CLEANUP_MODEL", "") + +def _build_converter() -> DocumentConverter: + try: + from docling.models.stages.ocr.tesseract_ocr_cli_model import TesseractCliOcrOptions + pdf_opts = PdfPipelineOptions(do_ocr=True, ocr_options=TesseractCliOcrOptions()) + logger.info("Docling: OCR enabled via Tesseract CLI") + except Exception as e: + logger.warning("Docling: Tesseract unavailable (%s) — OCR disabled", e) + pdf_opts = PdfPipelineOptions(do_ocr=False) + return DocumentConverter( + format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pdf_opts)} + ) + +converter = _build_converter() + +_llm_client = None +LLM_ACTIVE = False + + +def _init_llm(base_url: str | None, model: str) -> bool: + global OLLAMA_BASE_URL, OLLAMA_MODEL, LLM_ACTIVE, _llm_client + if not base_url: + OLLAMA_BASE_URL, OLLAMA_MODEL, LLM_ACTIVE, _llm_client = None, model, False, None + return False + try: + client = _openai.OpenAI(base_url=base_url, api_key="ollama") + OLLAMA_BASE_URL = base_url + OLLAMA_MODEL = model + _llm_client = client + LLM_ACTIVE = True + logger.info("Docling: LLM enabled via %s (model=%s)", base_url, model) + return True + except Exception as e: + logger.warning("Docling: LLM init failed (%s)", e) + LLM_ACTIVE = False + return False + + +_init_llm(OLLAMA_BASE_URL, OLLAMA_MODEL) + + +DEFAULT_ENRICH_PROMPT = ( + "You are a document cleaning assistant. " + "Fix OCR errors, normalise whitespace, and improve the Markdown structure. " + "Return ONLY the raw Markdown text — no code fences, no commentary, no explanation." +) + + +def _llm_enrich(markdown: str, system_prompt: str | None = None) -> str: + """Send extracted markdown to LLM for cleanup. Optionally override the system prompt.""" + if not _llm_client or not markdown.strip(): + return markdown + try: + resp = _llm_client.chat.completions.create( + model=OLLAMA_MODEL, + messages=[ + {"role": "system", "content": system_prompt or DEFAULT_ENRICH_PROMPT}, + {"role": "user", "content": markdown}, + ], + temperature=0, + ) + result = resp.choices[0].message.content or markdown + # llava tends to wrap output in code fences regardless of instructions — strip them + result = re.sub(r"^```(?:markdown)?\s*\n?", "", result.strip()) + result = re.sub(r"\n?```\s*$", "", result.strip()) + return result.strip() or markdown + except Exception as e: + logger.warning("Docling: LLM enrichment failed (%s) — returning raw output", e) + return markdown + + + +# ----------------------------------------------------------------- +ALLOWED_EXTENSIONS = { + "pdf", "docx", "xlsx", "pptx", + "html", "htm", "jpg", "jpeg", "png", + "tiff", "tif", "bmp", "md", "txt", "asciidoc", "adoc" +} +OUTPUT_FORMATS = {"markdown", "json", "html", "text"} + + +def _allowed_file(filename: str) -> bool: + return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + + +async def convert_file( + file: UploadFile, + db: AsyncSession, + output_format: str = "markdown", + use_llm: bool = True, + llm_prompt: str | None = None, +) -> Conversion: + if not _allowed_file(file.filename): + raise HTTPException( + status_code=422, + detail=f"File type not allowed. Allowed: {', '.join(sorted(ALLOWED_EXTENSIONS))}" + ) + if output_format not in OUTPUT_FORMATS: + raise HTTPException( + status_code=422, + detail=f"Output format not supported. Supported: {', '.join(sorted(OUTPUT_FORMATS))}" + ) + + suffix = os.path.splitext(file.filename)[1] + file_type = suffix.lstrip(".").lower() + + with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as tmp: + tmp.write(await file.read()) + tmp_path = tmp.name + + try: + result = converter.convert(tmp_path) + doc = result.document + + page_count = len(doc.pages) if hasattr(doc, "pages") and doc.pages else None + + if output_format == "markdown": + content = doc.export_to_markdown() + elif output_format == "json": + content = json.dumps(doc.export_to_dict(), ensure_ascii=False, indent=2) + elif output_format == "html": + content = doc.export_to_html() + elif output_format == "text": + content = doc.export_to_markdown() + content = re.sub(r"#{1,6}\s?", "", content) + content = re.sub(r"\*\*(.+?)\*\*", r"\1", content) + content = re.sub(r"\*(.+?)\*", r"\1", content) + + # LLM enrichment — only for markdown / text output, and only if requested + llm_used = False + if _llm_client and use_llm and output_format in ("markdown", "text"): + content = _llm_enrich(content, system_prompt=llm_prompt or None) + llm_used = True + + record = Conversion( + filename=file.filename, + file_type=file_type, + output_format=output_format, + content=content, + page_count=page_count, + llm_enabled=llm_used, + ) + db.add(record) + await db.commit() + await db.refresh(record) + return record + + except Exception as e: + await db.rollback() + raise HTTPException(status_code=500, detail=str(e)) + finally: + os.unlink(tmp_path) + + +async def get_conversion(conversion_id: int, db: AsyncSession) -> Conversion: + result = await db.execute(select(Conversion).where(Conversion.id == conversion_id)) + record = result.scalar_one_or_none() + if not record: + raise HTTPException(status_code=404, detail="Conversion not found") + return record + + +async def get_history(db: AsyncSession, limit: int = 20) -> list[Conversion]: + result = await db.execute( + select(Conversion).order_by(Conversion.created_at.desc()).limit(limit) + ) + return result.scalars().all() + + +async def delete_conversion(conversion_id: int, db: AsyncSession) -> dict: + result = await db.execute(select(Conversion).where(Conversion.id == conversion_id)) + record = result.scalar_one_or_none() + if not record: + raise HTTPException(status_code=404, detail="Conversion not found") + await db.delete(record) + await db.commit() + return {"message": f"Conversion {conversion_id} deleted"} diff --git a/docling-service/main.py b/docling-service/main.py new file mode 100644 index 0000000..66395d5 --- /dev/null +++ b/docling-service/main.py @@ -0,0 +1,29 @@ +from contextlib import asynccontextmanager +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from app.controllers.ConvertController import router +from app.database import engine, Base + + +@asynccontextmanager +async def lifespan(app: FastAPI): + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + yield + + +app = FastAPI( + title="Docling API", + version="1.0.0", + description="Advanced document conversion service powered by Docling. Supports PDF, DOCX, PPTX, XLSX, HTML, images and more.", + lifespan=lifespan, +) + +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], +) + +app.include_router(router) diff --git a/docling-service/requirements.txt b/docling-service/requirements.txt new file mode 100644 index 0000000..e023c30 --- /dev/null +++ b/docling-service/requirements.txt @@ -0,0 +1,7 @@ +docling +fastapi +uvicorn +python-multipart +asyncpg +sqlalchemy[asyncio] +openai diff --git a/example/1.pdf b/example/1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e18d7dee86968a89d544bfa63c55b1a9d7b7a013 GIT binary patch literal 123050 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 z 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 literal 0 HcmV?d00001 diff --git a/frontend/Caddyfile b/frontend/Caddyfile new file mode 100644 index 0000000..76c8932 --- /dev/null +++ b/frontend/Caddyfile @@ -0,0 +1,19 @@ +:80 { + encode gzip + + # Reverse proxy — strips prefix and forwards to backend + handle_path /api/markitdown/* { + reverse_proxy api-markitdown:8000 + } + + handle_path /api/docling/* { + reverse_proxy api-docling:8000 + } + + # Static files with SPA fallback + handle { + root * /srv + file_server + try_files {path} /index.html + } +} diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..36a8f57 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,822 @@ + + + + + + + MarkItDown vs Docling — LLM Input Processing + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markitdown-service/.dockerignore b/markitdown-service/.dockerignore new file mode 100644 index 0000000..77de465 --- /dev/null +++ b/markitdown-service/.dockerignore @@ -0,0 +1,4 @@ +__pycache__ +*.pyc +*.pyo +.env diff --git a/markitdown-service/Dockerfile b/markitdown-service/Dockerfile new file mode 100644 index 0000000..8e57562 --- /dev/null +++ b/markitdown-service/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3.11-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +RUN apt-get update && apt-get install -y \ + ffmpeg libmagic1 \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY main.py . +COPY app/ ./app/ + +EXPOSE 8000 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/markitdown-service/app/controllers/ConvertController.py b/markitdown-service/app/controllers/ConvertController.py new file mode 100644 index 0000000..562e21a --- /dev/null +++ b/markitdown-service/app/controllers/ConvertController.py @@ -0,0 +1,107 @@ +from fastapi import APIRouter, UploadFile, File, Depends, Query, Body, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession +from app.models.ConvertModel import ConvertResponse, HealthResponse, ConversionRecord +from app.services import MarkitdownService as markitdown_service +from app.database import get_db +from pydantic import BaseModel + +class CleanupRequest(BaseModel): + text: str + prompt: str | None = None + model: str | None = None + +class CleanupResponse(BaseModel): + text: str + +class SettingsRequest(BaseModel): + ollama_base_url: str | None = None + ollama_model: str = "llava" + cleanup_model: str | None = None + +class SettingsResponse(BaseModel): + llm_enabled: bool + ollama_base_url: str | None + ollama_model: str + cleanup_model: str | None = None + default_prompt: str | None = None + +router = APIRouter() + + +@router.get("/health", response_model=HealthResponse) +def health(): + return HealthResponse( + status="ok", + llm_enabled=markitdown_service.LLM_ACTIVE, + llm_model=markitdown_service.OLLAMA_MODEL if markitdown_service.LLM_ACTIVE else None, + ) + + +@router.post("/convert", response_model=ConvertResponse) +async def convert( + file: UploadFile = File(...), + use_llm: bool = Query(default=True, description="Use LLM vision for image understanding"), + llm_prompt: str | None = Query(default=None, description="Custom prompt for LLM vision"), + db: AsyncSession = Depends(get_db), +): + record = await markitdown_service.convert_file(file, db, use_llm=use_llm, llm_prompt=llm_prompt) + return record + + +@router.get("/models") +def list_models(): + if not markitdown_service.OLLAMA_BASE_URL: + return {"models": []} + try: + import httpx, re + base = re.sub(r"/v1/?$", "", markitdown_service.OLLAMA_BASE_URL.rstrip("/")) + resp = httpx.get(f"{base}/api/tags", timeout=5) + resp.raise_for_status() + names = [m["name"] for m in resp.json().get("models", [])] + return {"models": sorted(names)} + except Exception as e: + return {"models": [], "error": str(e)} + +@router.get("/settings", response_model=SettingsResponse) +def get_settings(): + return SettingsResponse( + llm_enabled=markitdown_service.LLM_ACTIVE, + ollama_base_url=markitdown_service.OLLAMA_BASE_URL, + ollama_model=markitdown_service.OLLAMA_MODEL, + cleanup_model=markitdown_service.CLEANUP_MODEL or None, + default_prompt=markitdown_service.DEFAULT_CLEANUP_PROMPT, + ) + +@router.post("/settings", response_model=SettingsResponse) +def update_settings(req: SettingsRequest): + markitdown_service._init_llm(req.ollama_base_url or None, req.ollama_model) + markitdown_service.CLEANUP_MODEL = req.cleanup_model or "" + return SettingsResponse( + llm_enabled=markitdown_service.LLM_ACTIVE, + ollama_base_url=markitdown_service.OLLAMA_BASE_URL, + ollama_model=markitdown_service.OLLAMA_MODEL, + cleanup_model=markitdown_service.CLEANUP_MODEL or None, + default_prompt=markitdown_service.DEFAULT_CLEANUP_PROMPT, + ) + +@router.post("/cleanup", response_model=CleanupResponse) +async def cleanup(req: CleanupRequest): + if not markitdown_service.LLM_ACTIVE: + raise HTTPException(status_code=503, detail="LLM not configured") + cleaned = markitdown_service.llm_cleanup(req.text, req.prompt, req.model) + return CleanupResponse(text=cleaned) + + +@router.get("/history", response_model=list[ConversionRecord]) +async def history(limit: int = 20, db: AsyncSession = Depends(get_db)): + records = await markitdown_service.get_history(db, limit) + return [ + ConversionRecord( + id=r.id, + filename=r.filename, + file_type=r.file_type, + llm_enabled=r.llm_enabled, + created_at=str(r.created_at), + ) + for r in records + ] diff --git a/markitdown-service/app/database.py b/markitdown-service/app/database.py new file mode 100644 index 0000000..9e7518c --- /dev/null +++ b/markitdown-service/app/database.py @@ -0,0 +1,21 @@ +import os +from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession +from sqlalchemy.orm import sessionmaker, DeclarativeBase + +DATABASE_URL = os.getenv("DATABASE_URL", "postgresql+asyncpg://admin:secret@db:5432/markitdown") + +# asyncpg driver +DATABASE_URL = DATABASE_URL.replace("postgresql://", "postgresql+asyncpg://") + +engine = create_async_engine(DATABASE_URL, echo=False) + +AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + + +class Base(DeclarativeBase): + pass + + +async def get_db(): + async with AsyncSessionLocal() as session: + yield session diff --git a/markitdown-service/app/models/ConvertModel.py b/markitdown-service/app/models/ConvertModel.py new file mode 100644 index 0000000..15e04fe --- /dev/null +++ b/markitdown-service/app/models/ConvertModel.py @@ -0,0 +1,42 @@ +from typing import Optional +from pydantic import BaseModel +from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, func +from app.database import Base + + +class Conversion(Base): + __tablename__ = "conversions" + + id = Column(Integer, primary_key=True, index=True) + filename = Column(String(255), nullable=False) + file_type = Column(String(50)) + markdown = Column(Text) + llm_enabled = Column(Boolean, default=False) + created_at = Column(DateTime, server_default=func.now()) + + +class ConvertResponse(BaseModel): + id: int + filename: str + markdown: str + llm_enabled: bool = False + + class Config: + from_attributes = True + + +class HealthResponse(BaseModel): + status: str + llm_enabled: bool = False + llm_model: Optional[str] = None + + +class ConversionRecord(BaseModel): + id: int + filename: str + file_type: Optional[str] = None + llm_enabled: bool = False + created_at: str + + class Config: + from_attributes = True diff --git a/markitdown-service/app/services/MarkitdownService.py b/markitdown-service/app/services/MarkitdownService.py new file mode 100644 index 0000000..273c8f7 --- /dev/null +++ b/markitdown-service/app/services/MarkitdownService.py @@ -0,0 +1,153 @@ +import os +import tempfile +import logging +from fastapi import UploadFile, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select +from markitdown import MarkItDown +from app.models.ConvertModel import Conversion + +logger = logging.getLogger(__name__) + +import openai as _openai + +OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL") or None +OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "llava") +CLEANUP_MODEL = os.getenv("CLEANUP_MODEL", "") + +LLM_ACTIVE = False +_llm_client = None +md_plain = MarkItDown() +md = md_plain + + +def _init_llm(base_url: str | None, model: str) -> bool: + global OLLAMA_BASE_URL, OLLAMA_MODEL, LLM_ACTIVE, _llm_client, md + if not base_url: + OLLAMA_BASE_URL, OLLAMA_MODEL, LLM_ACTIVE, _llm_client, md = None, model, False, None, md_plain + return False + try: + client = _openai.OpenAI(base_url=base_url, api_key="ollama") + OLLAMA_BASE_URL = base_url + OLLAMA_MODEL = model + _llm_client = client + md = MarkItDown(llm_client=client, llm_model=model) + LLM_ACTIVE = True + logger.info("MarkItDown: LLM enabled via %s (model=%s)", base_url, model) + return True + except Exception as e: + logger.warning("MarkItDown: LLM init failed (%s)", e) + LLM_ACTIVE = False + return False + + +_init_llm(OLLAMA_BASE_URL, OLLAMA_MODEL) + +DEFAULT_CLEANUP_PROMPT = """You are a technical document formatter. \ +The text below was extracted from a multi-column PDF using OCR and is poorly structured: \ +columns are merged, headers are mixed with values, and content is out of order. + +Your task: +1. Identify the logical sections (e.g. PERFORMANCE, MEMORY, STORAGE, CONNECTIVITY, etc.) +2. Under each section, format specs as a clean two-column Markdown table: | Spec | Value | +3. Keep bullet lists where appropriate (e.g. ports, certifications) +4. Remove duplicate lines and OCR artifacts (e.g. stray "---", lone "|", empty rows) +5. Preserve all technical values exactly — do not paraphrase specs + +Return ONLY the cleaned Markdown. No code fences, no commentary, no preamble.""" + +import re as _re + +def llm_cleanup(text: str, prompt: str | None = None, model: str | None = None) -> str: + if not _llm_client or not text.strip(): + return text + try: + resp = _llm_client.chat.completions.create( + model=model or OLLAMA_MODEL, + messages=[ + {"role": "system", "content": prompt or DEFAULT_CLEANUP_PROMPT}, + {"role": "user", "content": text}, + ], + temperature=0, + ) + result = resp.choices[0].message.content or text + result = _re.sub(r"^```(?:markdown)?\s*\n?", "", result.strip()) + result = _re.sub(r"\n?```\s*$", "", result.strip()) + return result.strip() or text + except Exception as e: + logger.warning("MarkItDown: cleanup failed (%s)", e) + return text + + +ALLOWED_EXTENSIONS = { + "pdf", "docx", "xlsx", "pptx", + "html", "csv", "txt", "jpg", "jpeg", "png", "zip", "epub" +} + + +def _allowed_file(filename: str) -> bool: + return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + + +async def convert_file( + file: UploadFile, + db: AsyncSession, + use_llm: bool = True, + llm_prompt: str | None = None, +) -> Conversion: + if not _allowed_file(file.filename): + raise HTTPException( + status_code=422, + detail=f"File type not allowed. Allowed: {', '.join(sorted(ALLOWED_EXTENSIONS))}" + ) + + suffix = os.path.splitext(file.filename)[1] + file_type = suffix.lstrip(".").lower() + + with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as tmp: + tmp.write(await file.read()) + tmp_path = tmp.name + + # Choose converter: LLM only if enabled globally AND requested per-call + use_llm_now = LLM_ACTIVE and use_llm + + # If custom prompt provided, create a one-off MarkItDown with that prompt + if use_llm_now and llm_prompt: + try: + converter = MarkItDown( + llm_client=_llm_client, + llm_model=OLLAMA_MODEL, + llm_prompt=llm_prompt, + ) + except TypeError: + # older markitdown versions may not support llm_prompt kwarg + converter = md + elif use_llm_now: + converter = md + else: + converter = md_plain + + try: + result = converter.convert(tmp_path) + record = Conversion( + filename=file.filename, + file_type=file_type, + markdown=result.text_content, + llm_enabled=use_llm_now, + ) + db.add(record) + await db.commit() + await db.refresh(record) + return record + except Exception as e: + await db.rollback() + raise HTTPException(status_code=500, detail=str(e)) + finally: + os.unlink(tmp_path) + + +async def get_history(db: AsyncSession, limit: int = 20) -> list[Conversion]: + result = await db.execute( + select(Conversion).order_by(Conversion.created_at.desc()).limit(limit) + ) + return result.scalars().all() diff --git a/markitdown-service/main.py b/markitdown-service/main.py new file mode 100644 index 0000000..dfa019b --- /dev/null +++ b/markitdown-service/main.py @@ -0,0 +1,24 @@ +from contextlib import asynccontextmanager +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from app.controllers.ConvertController import router +from app.database import engine, Base + + +@asynccontextmanager +async def lifespan(app: FastAPI): + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + yield + + +app = FastAPI(title="MarkItDown API", version="1.0.0", lifespan=lifespan) + +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], +) + +app.include_router(router) diff --git a/markitdown-service/requirements.txt b/markitdown-service/requirements.txt new file mode 100644 index 0000000..634f36a --- /dev/null +++ b/markitdown-service/requirements.txt @@ -0,0 +1,8 @@ +markitdown[all] +fastapi +uvicorn +python-multipart +asyncpg +sqlalchemy[asyncio] +openai +httpx
+ + + + + +
+
+ Cài đặt LLM (Ollama) +
+
+
+
+ +
+ + +
+
OpenAI-compatible endpoint
+
+
+ + +
Convert + Docling enrich
+
+
+ + +
Để trống = dùng model mặc định
+
+
+
+
+
+
 MarkItDown LLM
+
+
+
+
+
+
 Docling LLM
+
+
+
+
+
+ +
+ +
+
+ + +
+
+
+
+
+  MarkItDown +
+
+
+ Đang chờ... +
+
+
+
+
-
+
ms
+
+
+
+
+
-
+
ký tự
+
+
+
+
+
-
+
dòng
+
+
+
+
+
+
+
+
+
+
+  Docling +
+
+
+ Đang chờ... +
+
+
+
+
-
+
ms
+
+
+
+
+
-
+
ký tự
+
+
+
+
+
-
+
dòng
+
+
+
+
+
-
+
trang
+
+
+
+
+
+
+
+ + +
+
+
Tóm tắt so sánh
+ + + + + + + + + + +
Tiêu chíMarkItDownDoclingGhi chú
+
+
+ + +
+
+
+
+ +  MarkItDown + +
+ + + +
+
+
+
Tải file lên để + xem kết quả
+
+
+
+
+
+
+ +  Docling + +
+ + +
+
+
+
Tải file lên để + xem kết quả
+
+
+
+
+ + +
Lịch sử chuyển đổi gần đây
+
+
+
+
+  MarkItDown +
+
+
Chưa có lịch sử
+
+
+
+
+
+
+  Docling +
+
+
Chưa có lịch sử
+
+
+
+
+ +