docs/3-USER-GUIDE/content-processing-engines.md
When you add a source, Open Notebook extracts its text before chunking, embedding, and indexing it. How that extraction happens depends on the processing engine. You usually don't need to touch this — the defaults handle most content — but knowing your options helps when a document extracts poorly or a URL comes back empty.
Configure everything here in Settings → Content Processing.
Some engines are optional. The default image stays lean, so the heavier Docling (layout + OCR + image sources) and local Crawl4AI (JavaScript rendering) engines are opt-in — you enable them with an environment variable and they install on first startup. Until then they appear disabled in Settings. See Optional engines below.
Settings → Content Processing:
- Document Processing Engine (for uploaded files)
- URL Processing Engine (for web links)
- Enable OCR (scanned PDFs and images)
Changes apply to sources you add after saving. Re-add a source if you want it re-extracted with a different engine.
Controls how uploaded files (PDF, Word, PowerPoint, EPUB, etc.) are turned into text.
| Engine | What it does | Trade-off |
|---|---|---|
| auto (default) | Picks the best engine for the file type. Uses Docling for complex documents when it's enabled, simple extraction for the rest. | Balanced. Good default for almost everyone. |
| docling | Layout-aware extraction: understands columns, tables, headings, and reading order. Runs OCR on scanned pages when OCR is enabled. Optional — must be enabled (see below). | Most accurate, but slower and heavier. |
| simple | Fast, lightweight text extraction. Skips Docling entirely. | Fastest, but loses table structure and layout; no OCR. |
When to pick each:
auto isn't giving you clean results. Requires Docling to be enabled.Controls how web links are fetched and converted to text. Sites differ wildly — some are static HTML, others render everything with JavaScript, others sit behind anti-bot protection — so Open Notebook offers several engines with different capabilities.
| Engine | What it does | Needs |
|---|---|---|
| auto (default) | Tries each engine in order until one succeeds (see chain below). | Nothing; uses whatever is configured. |
| firecrawl | Managed scraping service. Handles JavaScript, anti-bot, and proxies well. | FIRECRAWL_API_KEY (or a self-hosted instance). |
| jina | Jina AI Reader. Good at turning articles into clean text. | JINA_API_KEY. |
| crawl4ai | Renders JavaScript pages in a local Chromium browser. No API key needed. Optional — must be enabled (see below). | OPEN_NOTEBOOK_ENABLE_CRAWL4AI=true (installs on first startup), or point at a remote server with CRAWL4AI_API_URL. |
| simple | Basic HTTP fetch parsed with BeautifulSoup. | Nothing. |
auto fallback chain worksIn auto mode, Open Notebook tries engines in order and stops at the first that returns usable content:
Firecrawl → Jina → Crawl4AI → simple (bs4)
simple is the last resort — a plain HTTP request. It's fast and needs nothing, but misses anything rendered by JavaScript, so single-page apps and dynamic sites often come back empty or partial.When to force a specific engine:
See the Environment Reference for the API keys and tuning variables (FIRECRAWL_API_URL, CCORE_FIRECRAWL_PROXY, CCORE_FIRECRAWL_WAIT_FOR, CRAWL4AI_API_URL).
Settings → Content Processing → Enable OCR (on by default, but only effective once Docling is enabled).
OCR reads text off images. It applies when the Docling engine handles:
OCR only runs through Docling, so it does nothing until Docling is enabled (see below). With Docling off, the toggle is disabled in Settings and scanned PDFs fall back to plain text extraction (which yields little for image-only pages), while image sources are rejected as unsupported.
Leave it on if you work with scanned documents or images. Turn it off to speed up processing when all your documents are text-native — OCR adds overhead you don't need there.
Docling and local Crawl4AI are heavy: Docling pulls a multi-hundred-MB to multi-GB machine-learning stack, and Crawl4AI bundles a Chromium browser. To keep the default image small, they are not installed by default. You opt in with an environment variable; the runtime is then installed automatically the first time the container starts, and the downloads are cached on your data volume so later restarts are fast.
| Enable this | To unlock |
|---|---|
OPEN_NOTEBOOK_ENABLE_DOCLING=true | The docling document engine, the OCR toggle, and image sources (PNG/JPEG/TIFF/BMP). |
OPEN_NOTEBOOK_ENABLE_CRAWL4AI=true | The local crawl4ai URL engine (JavaScript rendering via Chromium). |
CRAWL4AI_API_URL=… | The crawl4ai engine against a remote Crawl4AI server — no local install needed. |
Notes:
/app/data volume.Set the variables the same way as any other Open Notebook environment variable (see the Environment Reference and your docker-compose.yml).
Document extracts poorly (tables, columns garbled)
→ Enable Docling, then set Document Engine to "docling"
Scanned PDF or image comes out blank
→ Enable Docling and Enable OCR (engine auto or docling)
Web link comes back empty or half-extracted
→ The site is likely JavaScript-heavy
→ In auto mode, add a Firecrawl or Jina key, or enable Crawl4AI
→ Or force "crawl4ai" / "firecrawl"
Processing feels slow on clean documents
→ Set Document Engine to "simple" and/or disable OCR