Qianfan-OCR на GX10: документи в Markdown
Qianfan-OCR е един модел, който чете цяла страница и връща Markdown — без отделни стъпки за откриване на текст, разпознаване и сглобяване. С подходящ въпрос връща и таблици, формули и ключови полета като JSON. Работи локално, документите не напускат машината. Урокът казва какво е потвърдено на официалната страница и какво още не знаем.
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).
01Какво ще научиш
- Какво е „от край до край“ и с какво се различава от класическия OCR конвейер.
- Какво е потвърдено за модела: кой го прави, лиценз, размер, езици — и къде е границата на потвърденото.
- Как се включва режимът Layout-as-Thought и кога си струва.
- Как да го заредиш с Transformers и как го предлага страницата за vLLM.
- Как да извлечеш ключови полета като JSON и защо резултатът винаги се проверява.
- Как да четеш бенчмарковете: чии са, какво мерят и какво не доказват.
02Преди да започнеш
- Машина от класа NVIDIA GB10 (например ASUS Ascent GX10 или DGX Spark) с DGX OS (Ubuntu 24.04 за Arm64) и достъп до терминала — директно или по SSH.
- Python и свободно място за около 9,5 GB тегла (Hub показва два файла във формат BF16, общо около 9,5 GB). Интернет за първото изтегляне.
- Няколко примерни страници — сканирани или снимани, поне една с таблица и една на български. Използвай свои или измислени документи, не чужди данни.
- Прочети страницата на модела преди да го теглиш — виж източник 1.
NOTICE. Ако вграждаш модела в продукт, прочети LICENSE и NOTICE сам.03Стъпки
-
Какво е „от край до край“
Класическият конвейер (например PaddleOCR) е верига от малки модели: открива къде е текстът, разпознава буквите, после друга стъпка подрежда страницата. Qianfan-OCR е един модел: подаваш картинка и въпрос („Parse this document to Markdown.“), получаваш Markdown. Същият модел, с друг въпрос, прави и други задачи.
Страницата на модела изброява: превръщане в Markdown (и JSON/HTML), анализ на страницата (рамки, 25 вида елементи, ред на четене), таблици (изход HTML), формули (LaTeX), графики, извличане на ключови полета, ръкопис (само китайски и английски), текст от снимки на сцени и многоезично четене. Сглобеният модел има три части: преглед на картинката (Qianfan-ViT, до 4K), малък свързващ слой и езиков модел Qwen3-4B (контекст 32K, по страницата разширяем до 131K).
-
Провери, че моделът наистина е такъв, какъвто се описва
Преди да изтеглиш десетки гигабайта, отвори страницата на модела (източник 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 това е нормално, видеокартата ползва общата памет. -
Зареди модела с Transformers
Работим в отделна виртуална среда. Кодът по-долу е от официалната страница (раздел „Basic Usage“), с наш въпрос и път за примерна страница. Защо
do_sample=False? За разпознаване на текст искаш едно и също при всяко пускане, не „творчество“.bash · на машинатаpython3 -m venv ~/qianfan-ocr . ~/qianfan-ocr/bin/activate python -m pip install torch transformers pillowpython · parse.pyimport 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). -
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. Пусни една и съща страница и в двата режима и сравни на око. -
Ключови полета като JSON
Задачата се нарича извличане на ключова информация: даваш картинка на документ и казваш кои полета искаш. Примерът на страницата е с китайски въпрос; долу е наш, измислен, на английски. Страницата изброява разписки, фактури, свидетелства, медицински записи и лични карти като обхванати типове.
python · kie.pyimport 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 — не че е верен. -
Сървър с 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. -
Бенчмарковете — чии са и какво значат
Числата по-долу са от страницата на модела (прочетена на 01.10.2026) и от доклада; измерени са от авторите, не от нас. В метаданните на Hub са отбелязани като непотвърдени от трета страна. Скоростта е на една видеокарта NVIDIA A100 с vLLM 0.10.2 — не на GB10.
Проба Qianfan-OCR Сравнение от страницата OmniDocBench v1.5 (общ резултат) 93,12 DeepSeek-OCR-v2 91,09; Gemini-3 Pro 90,33; но PaddleOCR-VL 1.5 (конвейер) 94,50 OlmOCR Bench 79,8 „първо място сред моделите от край до край“ — заявено от авторите OCRBench 880 Qwen3-VL-4B 873 DocVQA 92,8 Qwen3-VL-4B 94,9 (по-добър) Извличане на ключова информация — средно (5 проби) 87,9 Qwen3-VL-235B-A22B 84,2; Gemini-3.1-Pro 79,2 Скорост (страници в секунда, A100) 1,024 (W8A8) · 0,503 (W16A16) MinerU 2.5: 1,057 Как да ги четеш: „първо място“ е само сред моделите от край до край — конвейерна система води в същата таблица. Пробите са предимно на английски и китайски; нищо от тях не казва колко точно чете български. Числото е повод да пробваш, не доказателство. Измери на свои страници.
-
Български и кирилица
Страницата твърди 192 езика и изрично изброява кирилицата сред писмеността. Български поименно не е назован и няма проба за него. Затова: пусни свои български страници — с различни шрифтове, печати, таблици — и гледай резултата ред по ред. Сходните букви („Ш“/„Щ“), малките шрифтове и печатите са честите грешки. Редовете и сумите, които са важни, преглежда човек.
-
Кога този модел и кога по-лек инструмент
Класическите инструменти (Tesseract, EasyOCR, PaddleOCR) са по-леки и вървят и на процесор. Qianfan-OCR е голям езиков модел (теглата са ~9,5 GB), но връща цялата страница — с таблици и ред на четене — наведнъж и умее да отговаря на въпроси за нея. Колко е по-бавен или по-точен на твоя хардуер и документи, не сме мерили. Решаваш с проба: ако простият инструмент ти стига, не ти трябва по-тежък.
Пример (измислен): малка фирма получава десетки сканирани фактури седмично. Моделът превръща страниците в Markdown и таблици; човек преглежда само сумите и страниците, на които моделът е върнал невалиден JSON.
-
Сигурност — минимумът
- Документите остават на машината: моделът работи локално. Теглата се теглят само веднъж, от страницата на модела.
- Не слагай реални чужди документи в уроци и тестове; ползвай свои или измислени.
- Не отваряй услуга за модела към интернет; достъпът е през терминала или SSH.
- Страницата препоръчва „умение“ (skill) за асистенти като Claude Code — не сме го прегледали; прочети кода му, преди да го пуснеш върху документи с лични данни.
- Пази изходните папки с права само за теб, ако в тях има лични данни.
04Проверка
- Отворил си страницата на модела и си видял лиценза и размера преди теглене.
- Една примерна страница е превърната в Markdown, без и със
enable_thinking=True; двата резултата са сравнени на око. - Една българска страница е прочетена и проверена ред по ред; не приемаш число за точност.
- Изходът за ключови полета се разбира като JSON в кода; сумите и датите са проверени от човек.
- Знаеш, че бенчмарковете са на авторите и не са мерени на GB10.
Тест
1. Как се включва Layout-as-Thought?
2. Какво означава „първо място на OmniDocBench v1.5“ за Qianfan-OCR?
3. Какво е потвърдено за български?
4. Какво правиш с разпознатите суми от фактура?
05Какво следва
06Източници
- baidu/Qianfan-OCR в Hugging Face 🔒 локално — страница на модела: описание, архитектура, бенчмаркове, лиценз (прочетена на 01.10.2026).
- Метаданни на Hub — лиценз, брой параметри, файлове, дати на създаване (18.03.2026) и последна промяна (29.04.2026).
- Qianfan-OCR: A Unified End-to-End Model for Document Intelligence — технически доклад, arXiv 2603.13398, подаден на 11.03.2026.
- Умението „Qianfan OCR Document Intelligence“ — връзка от страницата на модела; съдържанието не е прегледано от нас.
- NVIDIA DGX Spark: хардуер.