https://no-ocr.com/about
182
stars
20
commits
TypeScript
primary language
Jun 30, 2025
updated
A simple tool for exploring documents with AI, no fancy text extraction required. Just upload your files, then quickly search or ask questions about content across multiple collections.
Here is a blog with release details about this project: No-OCR Product
Additional background can be found on DeepWiki.
Here's a quick GIF demonstrating the basic flow of using No OCR:

Table of Contents
The core purpose of "No OCR" is to simplify AI-based PDF processing:
Below is a high-level workflow overview:

Create case:
sequenceDiagram
participant User
participant no-ocr-ui (CreateCase)
participant no-ocr-api
participant HF_Dataset
participant SearchClient
participant LanceDB
User->>no-ocr-ui (CreateCase): Upload PDFs & specify case name
no-ocr-ui (CreateCase)->>no-ocr-api: POST /create_case with PDFs
no-ocr-api->>no-ocr-api: Save PDFs to local storage
no-ocr-api->>no-ocr-api: Spawn background task (process_case)
no-ocr-api->>HF_Dataset: Convert PDFs to HF dataset
HF_Dataset-->>no-ocr-api: Return dataset
no-ocr-api->>SearchClient: Ingest dataset
SearchClient->>LanceDB: Create collection & upload points
LanceDB-->>SearchClient: Acknowledge ingestion
SearchClient-->>no-ocr-api: Done ingestion
no-ocr-api->>no-ocr-api: Mark case status as 'done'
no-ocr-api-->>no-ocr-ui (CreateCase): Return creation response
no-ocr-ui (CreateCase)-->>User: Display success message
Search:
sequenceDiagram
participant User
participant no-ocr-ui
participant SearchClient
participant LanceDB
participant HF_Dataset
participant VLLM
User->>no-ocr-ui: Enter search query and select case
no-ocr-ui->>SearchClient: Search images by text
SearchClient->>LanceDB: Query collection with text embedding
LanceDB-->>SearchClient: Return search results
SearchClient-->>no-ocr-ui: Provide search results
no-ocr-ui->>HF_Dataset: Load dataset for collection
HF_Dataset-->>no-ocr-ui: Return dataset
no-ocr-ui->>VLLM: Process images with VLLM
VLLM-->>no-ocr-ui: Return VLLM output
no-ocr-ui-->>User: Display search results and VLLM output
.env file in the no-ocr-ui directory.env file:
VITE_SUPABASE_URL=""
VITE_SUPABASE_ANON_KEY=""
VITE_REACT_APP_API_URI=""
pip install modal
modal setup
modal run no-ocr-llms/llm_serving_load_models.py --model-name Qwen/Qwen2-VL-7B-Instruct --model-revision 51c47430f97dd7c74aa1fa6825e68a813478097f
modal run no-ocr-llms/llm_serving_load_models.py --model-name vidore/colqwen2-v1.0-merged --model-revision 364a4f5df97231e233e15cbbaf0b9dbe352ba92c
modal deploy no-ocr-llms/llm_serving.py
modal deploy no-ocr-llms/llm_serving_colpali.py
.env file in the no-ocr-api directoryClone the repository:
git clone https://github.com/kyryl-opens-ml/no-ocr
(API) Install dependencies:
cd no-ocr-api
pip install -r requirements.txt
(API) Run server:
cd no-ocr-api
fastapi dev api.py
(UI) Install dependencies:
cd no-ocr-ui
npm install
(UI) Run UI:
cd no-ocr-ui
npm run dev
pip install -r no-ocr-api/requirements.txt
cp no-ocr-api/.env.example no-ocr-api/.env
# update COLPALI_TOKEN, COLPALI_BASE_URL, VLLM_URL and VLLM_API_KEY
uvicorn no-ocr-api/tests/mock_colpali:app --port 8000 &
pytest
19 commits
1 commits
TypeScript
48.9%
Python
48.5%
JavaScript
1.1%
Dockerfile
1.1%
https://no-ocr.com/about
182
stars
20
commits
TypeScript
primary language
Jun 30, 2025
updated
A simple tool for exploring documents with AI, no fancy text extraction required. Just upload your files, then quickly search or ask questions about content across multiple collections.
Here is a blog with release details about this project: No-OCR Product
Additional background can be found on DeepWiki.
Here's a quick GIF demonstrating the basic flow of using No OCR:

Table of Contents
The core purpose of "No OCR" is to simplify AI-based PDF processing:
Below is a high-level workflow overview:

Create case:
sequenceDiagram
participant User
participant no-ocr-ui (CreateCase)
participant no-ocr-api
participant HF_Dataset
participant SearchClient
participant LanceDB
User->>no-ocr-ui (CreateCase): Upload PDFs & specify case name
no-ocr-ui (CreateCase)->>no-ocr-api: POST /create_case with PDFs
no-ocr-api->>no-ocr-api: Save PDFs to local storage
no-ocr-api->>no-ocr-api: Spawn background task (process_case)
no-ocr-api->>HF_Dataset: Convert PDFs to HF dataset
HF_Dataset-->>no-ocr-api: Return dataset
no-ocr-api->>SearchClient: Ingest dataset
SearchClient->>LanceDB: Create collection & upload points
LanceDB-->>SearchClient: Acknowledge ingestion
SearchClient-->>no-ocr-api: Done ingestion
no-ocr-api->>no-ocr-api: Mark case status as 'done'
no-ocr-api-->>no-ocr-ui (CreateCase): Return creation response
no-ocr-ui (CreateCase)-->>User: Display success message
Search:
sequenceDiagram
participant User
participant no-ocr-ui
participant SearchClient
participant LanceDB
participant HF_Dataset
participant VLLM
User->>no-ocr-ui: Enter search query and select case
no-ocr-ui->>SearchClient: Search images by text
SearchClient->>LanceDB: Query collection with text embedding
LanceDB-->>SearchClient: Return search results
SearchClient-->>no-ocr-ui: Provide search results
no-ocr-ui->>HF_Dataset: Load dataset for collection
HF_Dataset-->>no-ocr-ui: Return dataset
no-ocr-ui->>VLLM: Process images with VLLM
VLLM-->>no-ocr-ui: Return VLLM output
no-ocr-ui-->>User: Display search results and VLLM output
.env file in the no-ocr-ui directory.env file:
VITE_SUPABASE_URL=""
VITE_SUPABASE_ANON_KEY=""
VITE_REACT_APP_API_URI=""
pip install modal
modal setup
modal run no-ocr-llms/llm_serving_load_models.py --model-name Qwen/Qwen2-VL-7B-Instruct --model-revision 51c47430f97dd7c74aa1fa6825e68a813478097f
modal run no-ocr-llms/llm_serving_load_models.py --model-name vidore/colqwen2-v1.0-merged --model-revision 364a4f5df97231e233e15cbbaf0b9dbe352ba92c
modal deploy no-ocr-llms/llm_serving.py
modal deploy no-ocr-llms/llm_serving_colpali.py
.env file in the no-ocr-api directoryClone the repository:
git clone https://github.com/kyryl-opens-ml/no-ocr
(API) Install dependencies:
cd no-ocr-api
pip install -r requirements.txt
(API) Run server:
cd no-ocr-api
fastapi dev api.py
(UI) Install dependencies:
cd no-ocr-ui
npm install
(UI) Run UI:
cd no-ocr-ui
npm run dev
pip install -r no-ocr-api/requirements.txt
cp no-ocr-api/.env.example no-ocr-api/.env
# update COLPALI_TOKEN, COLPALI_BASE_URL, VLLM_URL and VLLM_API_KEY
uvicorn no-ocr-api/tests/mock_colpali:app --port 8000 &
pytest
19 commits
1 commits
TypeScript
48.9%
Python
48.5%
JavaScript
1.1%
Dockerfile
1.1%