Знакът на КАГАМИ КАГАМИ
kagami.bg/academy · lesson · machine-readable viewVERIFIED 2026-10-01 · UPDATED 2026-10-01
IDENTITY
module
GX10-04-207 · Qianfan-OCR: an end-to-end document model (image to Markdown / JSON), with optional Layout-as-Thought
series
GX10 (local AI server class: NVIDIA GB10, e.g. ASUS Ascent GX10 / DGX Spark)
level
Intermediate
duration
about 1.5 h
prerequisites
A GB10-class machine with DGX OS (Ubuntu 24.04, Arm64), shell access, Python with a recent transformers release or vLLM, a Hugging Face download of about 9.5 GB, a few fictional or fully anonymised sample pages
trust_label
VERIFIED 2026-10-01 (Hugging Face model page and Hub metadata for baidu/Qianfan-OCR, arXiv abstract 2603.13398) · UPDATED 2026-10-01 · NOT TESTED (no GB10 machine available during the check; nothing was run, no speed or accuracy measured)
versions
baidu/Qianfan-OCR, repository created 2026-03-18, last modified 2026-04-29 (Hub metadata read 2026-10-01) · license Apache-2.0 (some bundled third-party files MIT, see NOTICE in the repository) · not gated · weights BF16 safetensors in 2 shards, Hub reports 4.74 B parameters and about 9.5 GB of files · model card calls it a 4B-parameter model · paper arXiv:2603.13398 (2026-03-11)
language
human view: bg · english edition: /en/academy/gx10/ (same file name)
previous / next
04-206 PaddleOCR-VL / 04-208 GLM-OCR (related OCR lessons: 04-213 Tesseract, 04-214 EasyOCR, 04-215 PaddleOCR classic, 04-216 OCR comparison)
PURPOSE

Understand and try Qianfan-OCR (Baidu Qianfan Team) locally on a GB10-class AI server: one vision-language model that turns a page image directly into Markdown, and can also return layout, tables (HTML), formulas (LaTeX), chart answers and key fields as JSON, steered by the prompt. Know what is confirmed by the official model page, what is only the authors' own benchmark claim, and what stays unverified (Bulgarian quality, GB10 behaviour, speed). No measured claims are made here.

KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

04-208 GLM-OCR (previous: 04-206 PaddleOCR-VL) · related: 04-213 Tesseract, 04-214 EasyOCR, 04-216 OCR comparison, 04-215 PaddleOCR classic, 04-135 contract analysis with OCR and a local LLM · GX10 series index · offer: Quick experiment (kagami.bg/stalbata/)

SOURCES
TAGS
gx10nvidia-gb10arm64ocrqianfan-ocrdocument-intelligencelayout-as-thoughtkielocal-ai
ПРОВЕРЕНО · 01.10.2026 ОБНОВЕНО · 01.10.2026

Qianfan-OCR на GX10: документи в Markdown

Qianfan-OCR е един модел, който чете цяла страница и връща Markdown — без отделни стъпки за откриване на текст, разпознаване и сглобяване. С подходящ въпрос връща и таблици, формули и ключови полета като JSON. Работи локално, документите не напускат машината. Урокът казва какво е потвърдено на официалната страница и какво още не знаем.

⏱ ~1,5 ч Средно GX10 NVIDIA GB10 · 128 GB обща памет Qianfan-OCR · Baidu · Apache-2.0 · ~9,5 GB тегла
Qianfan-OCR (тегла от Hugging Face)🔒 локално Transformers / vLLM🔒 локално
🔄
ОБНОВЕНО · 01.10.2026 — какво
Урокът е преработен след проверка на официалната страница на модела. Потвърдихме, че моделът съществува (Baidu, Hugging Face baidu/Qianfan-OCR), лиценза (Apache-2.0), свободното теглене без заявка за достъп, размера (~9,5 GB) и техническия доклад (arXiv, 11.03.2026). Поправихме: „5B параметъра“ → страницата казва „4B“, а Hub брои 4,74 млрд.; „#1“ по всички бенчмаркове → първо място е заявено само сред модели от край до край, по данни на авторите; „192 езика, включително български“ → страницата казва 192 езика и посочва кирилицата, но български поименно не назовава; примерът с vLLM е даден както е на страницата, с уговорка за версията. Добавихме: раздел „Какво не сме пускали“, честна таблица с бенчмаркове (с източник и дата) и препоръка за човешка проверка. Махнахме: частните примери за клиентски документи, твърденията за готовност за GX10 без проба, и скоростта „на GX10“ (измерена е на A100).
⚠️
Какво не сме пускали сами
При проверката нямахме машина от класа GB10 и не пуснахме нищо — затова няма етикет „ТЕСТВАНО“. Потвърдено е само каквото пише на официалната страница и в метаданните на Hugging Face. Непроверено: как точно се държи моделът върху GB10 (Arm процесор, обща памет) и коя версия на vLLM или Transformers го поддържа; колко добре чете български — страницата не дава мярка за български; скорост и памет на нашата машина. Числата за скорост на страницата са от видеокарта A100, не от GB10. Не даваме собствени числа — измери на свои страници.

01Какво ще научиш

02Преди да започнеш

🔒
Лиценз и достъп
Страницата на модела обявява лиценз Apache-2.0 (и в метаданните на Hub); моделът не е със заявка за достъп. Част от включените в хранилището файлове на трети страни са с лиценз MIT — списъкът е във файла NOTICE. Ако вграждаш модела в продукт, прочети LICENSE и NOTICE сам.
💡
Размерът на модела — две различни числа
Страницата и докладът го наричат „модел с 4B параметъра“ (езиковата част е Qwen3-4B). Hub брои всички части заедно и показва 4,74 млрд. (забележи: „5B“ в стар вариант на този урок е закръгление, не число от страницата). Файловете са около 9,5 GB, защото са в 16-битов формат. Колко памет трябва при работа (с контекст и картинки) не сме мерили.

03Стъпки

  1. Какво е „от край до край“

    Класическият конвейер (например PaddleOCR) е верига от малки модели: открива къде е текстът, разпознава буквите, после друга стъпка подрежда страницата. Qianfan-OCR е един модел: подаваш картинка и въпрос („Parse this document to Markdown.“), получаваш Markdown. Същият модел, с друг въпрос, прави и други задачи.

    Страницата на модела изброява: превръщане в Markdown (и JSON/HTML), анализ на страницата (рамки, 25 вида елементи, ред на четене), таблици (изход HTML), формули (LaTeX), графики, извличане на ключови полета, ръкопис (само китайски и английски), текст от снимки на сцени и многоезично четене. Сглобеният модел има три части: преглед на картинката (Qianfan-ViT, до 4K), малък свързващ слой и езиков модел Qwen3-4B (контекст 32K, по страницата разширяем до 131K).

  2. Провери, че моделът наистина е такъв, какъвто се описва

    Преди да изтеглиш десетки гигабайта, отвори страницата на модела (източник 1) и сравни: издател baidu, лиценз Apache-2.0, два файла с тегла, техническият доклад (източник 3, подаден в arXiv на 11.03.2026) и датата на последна промяна в хранилището (29.04.2026 по метаданните, прочетени на 01.10.2026). Това е проверката, която направихме и ние. Ако нещо от тези неща се е променило, вярвай на страницата, не на урока.

    bash · на машината
    uname -m
    nvidia-smi
    df -h ~

    Очакваш aarch64 и поне 15–20 GB свободно място (теглата са ~9,5 GB; допълнително място за кеша на инструмента). В nvidia-smi редът за памет може да казва „Not Supported“ — на GB10 това е нормално, видеокартата ползва общата памет.

  3. Зареди модела с Transformers

    Работим в отделна виртуална среда. Кодът по-долу е от официалната страница (раздел „Basic Usage“), с наш въпрос и път за примерна страница. Защо do_sample=False? За разпознаване на текст искаш едно и също при всяко пускане, не „творчество“.

    bash · на машината
    python3 -m venv ~/qianfan-ocr
    . ~/qianfan-ocr/bin/activate
    python -m pip install torch transformers pillow
    python · parse.py
    import torch
    from PIL import Image
    from transformers import AutoModelForImageTextToText, AutoProcessor
    
    MODEL = "baidu/Qianfan-OCR"
    model = AutoModelForImageTextToText.from_pretrained(
        MODEL, torch_dtype=torch.bfloat16, device_map="auto"
    ).eval()
    processor = AutoProcessor.from_pretrained(MODEL)
    
    image = Image.open("page.png").convert("RGB")
    messages = [{"role": "user", "content": [
        {"type": "image", "image": image},
        {"type": "text", "text": "Parse this document to Markdown."},
    ]}]
    
    inputs = processor.apply_chat_template(
        messages, add_generation_prompt=True,
        tokenize=True, return_dict=True, return_tensors="pt",
    ).to(model.device)
    
    with torch.no_grad():
        out = model.generate(**inputs, max_new_tokens=512, do_sample=False)
    
    new_ids = out[:, inputs["input_ids"].shape[1]:]
    print(processor.batch_decode(new_ids, skip_special_tokens=True)[0])
    ⚠️
    Не сме го пускали
    Кодът е от страницата на модела, но не е изпълнен от нас. Моделът има собствен тип (qianfan_ocr), затова е нужна достатъчно нова версия на Transformers — коя точно, страницата не казва. Ако получиш грешка за непознат модел, обнови пакета; страницата на vLLM (стъпка 6) показва и вариант с --trust-remote-code. Не заобикаляй със случайни параметри — виж обсъжданията на страницата на модела. За по-дълга страница увеличи max_new_tokens (при по-големи страници страницата използва 16384).
  4. Layout-as-Thought: мислене за страницата

    Идеята: преди да даде крайния текст, моделът първо описва страницата — рамки на елементите, вид, ред на четене — и после чете по този план. Включва се с enable_thinking=True при apply_chat_template. Авторите го обясняват с две цели: да получиш самия анализ на страницата и да подобриш точността при сложни страници.

    python · с мислене
    inputs = processor.apply_chat_template(
        messages, add_generation_prompt=True,
        tokenize=True, return_dict=True, return_tensors="pt",
        enable_thinking=True,
    ).to(model.device)
    
    with torch.no_grad():
        out = model.generate(**inputs, max_new_tokens=16384, do_sample=False)

    Съвет от страницата: включвай за смесени страници (отчети, вестници, листове с много елементи); изключвай за еднородни (един стълб текст, прости формуляри) — по-кратко време, а по думите на авторите и по-добър резултат. Мисленето прави изхода по-дълъг, затова е нужен по-голям max_new_tokens. Пусни една и съща страница и в двата режима и сравни на око.

  5. Ключови полета като JSON

    Задачата се нарича извличане на ключова информация: даваш картинка на документ и казваш кои полета искаш. Примерът на страницата е с китайски въпрос; долу е наш, измислен, на английски. Страницата изброява разписки, фактури, свидетелства, медицински записи и лични карти като обхванати типове.

    python · kie.py
    import json
    
    prompt = (
        "Extract these fields from the invoice image: "
        "invoice_number, date, supplier, total_amount, currency. "
        "Return standard JSON only."
    )
    messages = [{"role": "user", "content": [
        {"type": "image", "image": image},
        {"type": "text", "text": prompt},
    ]}]
    # ... същото apply_chat_template + generate като по-горе ...
    
    raw = "..."  # текстът, върнат от модела
    try:
        data = json.loads(raw[raw.index("{"): raw.rindex("}") + 1])
    except ValueError:
        data = None      # не е валиден JSON: върни за ръчна проверка
    print(data)
    ✅
    Човек одобрява всичко с реален ефект
    Разпознатите суми, дати, номера и имена са чернова. Преди да влязат в счетоводство, договор или база данни, ги преглежда човек. Кодът проверява само, че изходът е валиден JSON — не че е верен.
  6. Сървър с vLLM (по страницата)

    Страницата на модела дава команда за обслужване с vLLM, подобна на сървъра за OpenAI-съвместими заявки. Тя е в два варианта: в раздела за vLLM — с --trust-remote-code и подмяна на архитектурата; в бутона „Use this model“ на Hub — просто vllm serve baidu/Qianfan-OCR. Кой е правилен, зависи от версията на vLLM.

    bash · по страницата на модела
    pip install vllm
    vllm serve baidu/Qianfan-OCR --trust-remote-code \
      --hf-overrides '{"architectures": ["InternVLChatModel"]}'
    ⚠️
    Не сме го пускали
    Не сме проверявали дали pip install vllm дава работещ пакет за Arm64 върху GB10 и дали горната команда работи с неговата версия. Ако започваш, опитай първо Transformers (стъпка 3). Не отваряй сървъра към мрежата — остави го на локалния адрес на машината, достъп през терминала или SSH.
  7. Бенчмарковете — чии са и какво значат

    Числата по-долу са от страницата на модела (прочетена на 01.10.2026) и от доклада; измерени са от авторите, не от нас. В метаданните на Hub са отбелязани като непотвърдени от трета страна. Скоростта е на една видеокарта NVIDIA A100 с vLLM 0.10.2 — не на GB10.

    ПробаQianfan-OCRСравнение от страницата
    OmniDocBench v1.5 (общ резултат)93,12DeepSeek-OCR-v2 91,09; Gemini-3 Pro 90,33; но PaddleOCR-VL 1.5 (конвейер) 94,50
    OlmOCR Bench79,8„първо място сред моделите от край до край“ — заявено от авторите
    OCRBench880Qwen3-VL-4B 873
    DocVQA92,8Qwen3-VL-4B 94,9 (по-добър)
    Извличане на ключова информация — средно (5 проби)87,9Qwen3-VL-235B-A22B 84,2; Gemini-3.1-Pro 79,2
    Скорост (страници в секунда, A100)1,024 (W8A8) · 0,503 (W16A16)MinerU 2.5: 1,057

    Как да ги четеш: „първо място“ е само сред моделите от край до край — конвейерна система води в същата таблица. Пробите са предимно на английски и китайски; нищо от тях не казва колко точно чете български. Числото е повод да пробваш, не доказателство. Измери на свои страници.

  8. Български и кирилица

    Страницата твърди 192 езика и изрично изброява кирилицата сред писмеността. Български поименно не е назован и няма проба за него. Затова: пусни свои български страници — с различни шрифтове, печати, таблици — и гледай резултата ред по ред. Сходните букви („Ш“/„Щ“), малките шрифтове и печатите са честите грешки. Редовете и сумите, които са важни, преглежда човек.

  9. Кога този модел и кога по-лек инструмент

    Класическите инструменти (Tesseract, EasyOCR, PaddleOCR) са по-леки и вървят и на процесор. Qianfan-OCR е голям езиков модел (теглата са ~9,5 GB), но връща цялата страница — с таблици и ред на четене — наведнъж и умее да отговаря на въпроси за нея. Колко е по-бавен или по-точен на твоя хардуер и документи, не сме мерили. Решаваш с проба: ако простият инструмент ти стига, не ти трябва по-тежък.

    Пример (измислен): малка фирма получава десетки сканирани фактури седмично. Моделът превръща страниците в Markdown и таблици; човек преглежда само сумите и страниците, на които моделът е върнал невалиден JSON.

  10. Сигурност — минимумът

    • Документите остават на машината: моделът работи локално. Теглата се теглят само веднъж, от страницата на модела.
    • Не слагай реални чужди документи в уроци и тестове; ползвай свои или измислени.
    • Не отваряй услуга за модела към интернет; достъпът е през терминала или SSH.
    • Страницата препоръчва „умение“ (skill) за асистенти като Claude Code — не сме го прегледали; прочети кода му, преди да го пуснеш върху документи с лични данни.
    • Пази изходните папки с права само за теб, ако в тях има лични данни.

04Проверка

Тест

1. Как се включва Layout-as-Thought?

2. Какво означава „първо място на OmniDocBench v1.5“ за Qianfan-OCR?

3. Какво е потвърдено за български?

4. Какво правиш с разпознатите суми от фактура?

05Какво следва

06Източници

  1. baidu/Qianfan-OCR в Hugging Face 🔒 локално — страница на модела: описание, архитектура, бенчмаркове, лиценз (прочетена на 01.10.2026).
  2. Метаданни на Hub — лиценз, брой параметри, файлове, дати на създаване (18.03.2026) и последна промяна (29.04.2026).
  3. Qianfan-OCR: A Unified End-to-End Model for Document Intelligence — технически доклад, arXiv 2603.13398, подаден на 11.03.2026.
  4. Умението „Qianfan OCR Document Intelligence“ — връзка от страницата на модела; съдържанието не е прегледано от нас.
  5. NVIDIA DGX Spark: хардуер.