Це Частина 2 з серії DocSummarizer. Див. Частина 1 для архітектури і візерунків, або Частина 3 для глибокого технічного пірнання у вбудовування та отримання.
Перетворює документи або адреси URL на обчислені доказами резюме - для людей або агентів комп'ютерного інтерфейсу - без надсилання нічого на хмару.
Будь-яку заяву можна відстежити, кожен факт посилається на її джерело.
# Human-readable summary
docsummarizer -f contract.pdf
# JSON for agents/pipelines
docsummarizer tool -u "https://docs.example.com"
Обговорення цієї статті: встановлення, режими ключів (Авто/ BenrtRag/Bert), шаблони і звичайні випадки використання.
Те, чого він не покриває: Повне посилання на команди, параметри налаштування, усунення проблем, параметри архітектури.
За повною документацією дивіться README. Для того, як він працює внутрішньо, дивіться Частина 3.
Більшість резюме надають вам текст. свідчення.
[chunk-N] Цитата повернутися до вихідного матеріалуЯкщо треба, довіра Резюме, або подавання його іншій системі, має значення.
The tool Команда розроблена спеціально для інтеграції з агентами AI, серверами MCP та іншими автоматичними системами. Програма виведе програму JSON до stdout з умовами, накресленими на основі даних, - відмінною для побудови трубопроводів RAP або інструментів агентів.
# Summarize a URL and get JSON output
docsummarizer tool --url "https://example.com/docs.html"
# Summarize a local file
docsummarizer tool -f document.pdf
# With a focus query
docsummarizer tool -f contract.pdf -q "payment terms and conditions"
# Pipe to jq for processing
docsummarizer tool -f doc.pdf | jq '.summary.keyFacts'
Команда інструмента повертає структурований JSON з стеженням за доказами:
{
"success": true,
"source": "https://example.com/docs.html",
"contentType": "text/html",
"summary": {
"executive": "Brief summary of the document.",
"keyFacts": [
{
"claim": "The system supports 10,000 TPS.",
"confidence": "high",
"evidence": ["chunk-3", "chunk-7"],
"type": "fact"
}
],
"topics": [
{
"name": "Architecture",
"summary": "The system uses microservices...",
"evidence": ["chunk-1", "chunk-2"]
}
],
"entities": {
"people": ["John Smith"],
"organizations": ["Acme Corp"],
"concepts": ["OAuth 2.0", "REST API"]
},
"openQuestions": ["What is the disaster recovery plan?"]
},
"metadata": {
"processingSeconds": 12.5,
"chunksProcessed": 15,
"model": "qwen2.5:1.5b",
"mode": "MapReduce",
"coverageScore": 0.95,
"citationRate": 1.2,
"fetchedAt": "2025-01-15T10:30:00Z"
}
}
docsummarizer tool [options]
Передня частина
|--------|-------|-------------|
| --url | -u location to app і підсумувати ♪
| --file | -f } Файл, щоб підсумувати ♪
| --query | -q ♪ Додатковий запит у фокусі ♪
| --mode | -m Режим =$ (Автоматичний, БертРаґ, Берт, Бертхир, MpReduce, Rag, Ітерати)
| --model ♪ Ollama модель, яку слід використовувати ♪
| --config | -c шляху до файла налаштувань@ info: whatsthis
evidence Ідентифікатори, що стосуються шматків джерелаhigh, medium, або low ґрунтована на підтвердженні доказівexecutive резюме не має позначок посилань на простий дисплейsuccess: false з an error messageСкрипт мовою Python:
import subprocess
import json
result = subprocess.run(
["docsummarizer", "tool", "-u", "https://example.com/api-docs"],
capture_output=True, text=True
)
data = json.loads(result.stdout)
if data["success"]:
for fact in data["summary"]["keyFacts"]:
if fact["confidence"] == "high":
print(f"- {fact['claim']}")
Канал оболонки:
# Extract high-confidence facts only
docsummarizer tool -f doc.pdf | jq '[.summary.keyFacts[] | select(.confidence == "high")]'
# Get just the executive summary
docsummarizer tool -u "https://example.com" | jq -r '.summary.executive'
Можна використовувати вже вбудовані природні виконувані файли з Випуски GitHub:
Теократична} Звантажте ♪
| ---------- | -------------- | ---------- |
|---|---|---|
Д. д. д. д. д. д. д. д. д. д. д. д. д. д. docsummarizer-win-arm64.zip |
||
x64} docsummarizer-linux-x64.tar.gz |
Linux'ARMSecond item of% 1% 2 Drive sentence docsummarizer-linux-arm64.tar.gz |
|---|
АРМ64 (Аплейк Кремнієвий) годин docsummarizer-osx-arm64.tar.gz |
# Download and extract (Linux/macOS)
curl -L -o docsummarizer.tar.gz https://github.com/scottgal/mostlylucidweb/releases/download/docsummarizer-v3.1.0/docsummarizer-linux-x64.tar.gz
tar -xzf docsummarizer.tar.gz
chmod +x docsummarizer
# Download and extract (Windows PowerShell)
Invoke-WebRequest -Uri "https://github.com/scottgal/mostlylucidweb/releases/download/docsummarizer-v3.1.0/docsummarizer-win-x64.zip" -OutFile "docsummarizer.zip"
Expand-Archive -Path "docsummarizer.zip" -DestinationPath "."
Для чистої екстрактної узагальнення, Зовнішні служби не потрібні:
docsummarizer -f document.md -m Bert
Моделі ONNX автоматично завантажуються з Hbacking Face після першого використання (~23MB). Повертає через ~3- 5 секунд.
Для резюме з підтримкою LLM, потрібна Ollama:
# Install Ollama from https://ollama.ai
ollama pull llama3.2:3b # Default model - good balance of speed/quality
ollama serve
Порада швидкості: для швидших підрахунків (~3s vs ~15s), використовувати
--model qwen2.5:1.5b
Потрібні для PDF, DOCX, XLSX, PPTX, HTML, зображень (PNG/ JPG/TIFF), CSV, VTT і файли AsciiDoc. Відмітки і текстові файли буде прочитано безпосередньо, не обов' язково для додзвону.
docker run -d -p 5001:5001 quay.io/docling-project/docling-serve
Типово не потрібен - BerterRag використовує вектори пам' яті. Увімкнути Qdrant для постійного зберігання, щоб уникнути повторного зберігання документів під час наступних заходів:
docker run -d -p 6333:6333 -p 6334:6334 qdrant/qdrant
Потім налаштуйте в docsummarizer.json:
{
"bertRag": {
"vectorStore": "Qdrant",
"collectionName": "docsummarizer",
"persistVectors": true
}
}
Якщо ви надаєте перевагу Ollama для вбудовування замість ONNX:
ollama pull nomic-embed-text # Or mxbai-embed-large
# Then use: --embedding-backend Ollama
docsummarizer check --verbose
Очікувані дані показують відформатовану таблицю:
Dependency Status
╭─────────┬────────┬────────────────────────╮
│ Service │ Status │ Endpoint │
├─────────┼────────┼────────────────────────┤
│ Ollama │ OK │ http://localhost:11434 │
│ Docling │ Optional │ http://localhost:5001 │
│ Qdrant │ Optional │ localhost:6333 │
╰─────────┴────────┴────────────────────────╯
Default Model Info
╭────────────────┬────────────────╮
│ Property │ Value │
├────────────────┼────────────────┤
│ Name │ llama3.2:3b │
│ Family │ llama │
│ Parameters │ 3.2B │
│ Context Window │ 128,000 tokens │
╰────────────────┴────────────────╯
Ready to summarize! Ollama is available.
ПриміткаДзвінок і QDantrive показують, що це добре для роботи з Маркоду.
Працює docsummarizer без аргументів:
README.md у поточному каталозіreadme.summary.md# Summarize README.md in current directory
docsummarizer
# Shows a formatted panel with:
# - Document info table (file, mode, model)
# - Progress indicators during processing
# - Summary panel with the result
# - Topics tree if available
# - Saved: readme.summary.md
# Just run it - Auto mode picks the best approach
docsummarizer -f document.pdf
# Fast mode - no LLM, pure extraction (~3-5s)
docsummarizer -f document.pdf -m Bert
# Production mode - best quality with validated citations
docsummarizer -f document.pdf -m BertRag
# Focused on specific topic
docsummarizer -f manual.pdf -m BertRag --focus "installation steps"
# Verbose progress
docsummarizer -f document.pdf -v
Інструмент еволюціонував від " Простої карти " до повного трубопроводу. Ось що робить кожен режим:
Вибирає правильний режим на основі того, про що ви просите. Використовуйте цей режим, якщо у вас немає причин цього.
docsummarizer -f doc.pdf
Це те, що ви хочете для виробництва.
docsummarizer -f doc.pdf -m BertRag
docsummarizer -f doc.pdf -m BertRag --focus "payment terms"
Навіщо використовувати його: Кожне твердження слідує за відрізком джерела. Без галюцинацій. Масштабує до будь- якого розміру документа. LLM виконується лише у кінці документа (sheap).
Чисте видобування з використанням локальних моделей ONNX. Жодного виклику LLM взагалі.
docsummarizer -f doc.pdf -m Bert
Навіщо використовувати його: Працює у автономному режимі. Повертає у ~3- 5 секундах. Визначити (те саме, що і вхід = той самий вивід). Добре підходить для швидкого сканування.
Екскременти BERT, полірування LLM. Середина між Бертом і БертомRag.
docsummarizer -f doc.pdf -m BertHybrid
Початкові режими. Все ще працюють, але для більшості випадків використання BertRag їх було замінено.
docsummarizer -f doc.pdf -m MapReduce # Full coverage
docsummarizer -f doc.pdf -m Rag --focus "query" # Legacy focused mode
Замість узагальнювати, задавайте питання про якийсь документ:
docsummarizer -f manual.pdf --query "How do I install the software?"
Підсумувати веб- сторінки безпосередньо без звантаження:
# Summarize a web article
docsummarizer --url "https://example.com/article.html" --web-enabled
# Summarize a remote PDF
docsummarizer --url "https://example.com/document.pdf" --web-enabled
# With structured JSON extraction
docsummarizer --url "https://example.com/api-docs.html" --web-enabled --structured
Вміст, що підтримується: HTML (самітовано), PDF, Markdown, images (OCR), Office documents. Великі зображення автоматично змінено.
Безпека: захист від SSRF, захист від повторного прив' язання DNS, гігієна вмісту, захист від декомпресійної бомби, дезінфікація HTML.
Сторінки JavaScript: Використання --web-mode Playwright для програм SPEAs і React (встановлює зберігачій при першому використанні).
Видобути пристрій для читання JSON замість проза:
docsummarizer -f document.pdf --structured -o Json
Видобування: сутності, функції, ключові потоки, факти (з рівнем довіри), непевні, придатні проходи.
# Use a template
docsummarizer -f doc.pdf --template executive
docsummarizer -f doc.pdf -t bullets
# Specify custom word count with template:wordcount syntax
docsummarizer -f doc.pdf -t bookreport:500
docsummarizer -f doc.pdf -t executive:100
# Or use --words to override any template's default
docsummarizer -f doc.pdf -t detailed --words 300
♪00.
|----------|-------|----------|
| default +00} Зрівноважує підсумки з темами (2 абзаци) }
| prose 400 * Чищення багатоабзацового прозу - без цілих
| brief Д-р Цукер: "Чудово, підсумовуй 2-3 речення"
| oneliner Д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. про р.
| bullets * * * * _
| executive Укорочення з'єднанням з'єднаним з' єднанням
| detailed 1000}Створити з повними темами*
| technical } Технічні docs with application details}
| academic Абстрактний формат Academic}
| citations mathicus separes with source's only
| bookreport Повідомлення щодо мови +500 * (встановлення, символи, графік, теми)}
| meeting Мається на увазі, що ми маємо справу з цими записами, а не з ними.
| strict 60} Токен-ефективний, 3 кулі макс, ні він}
Щоб переглянути всі доступні шаблони з описами:
docsummarizer templates
Порівняти моделі за одним документом за допомогою benchmark subcommand:
docsummarizer benchmark -f doc.pdf -m "qwen2.5:1.5b,llama3.2:3b,ministral-3:3b"
Команда pursemark оброблює документ один раз, а потім запускає кожну модель на однакові шматки для справедливого порівняння. Вивід показує час, кількість слів і слова/ секунду для кожної з моделей.
Процесувати цілі каталоги:
# Use BertRag for quality
docsummarizer -d ./documents -m BertRag -v
# Fast offline batch (no LLM needed)
docsummarizer -d ./documents -m Bert -o Json --output-dir ./summaries
# Process only PDFs recursively
docsummarizer -d ./documents -e .pdf --recursive -v
Передня частина рядка:
|--------|-------|-------------|---------|
| --file | -f path to document (DOCX, PDF, MD) * - *
| --directory | -d Шлях до каталогу для пакетної обробки - *
| --url | -u ♪ Web URL для app і підсумовування} - }
| --web-enabled ▸ Увімкнути отримання Тенет (обов' язкове для -- url)} false |
| --mode | -m Режим сягментації: Auto, BertRag, BerthHybrid, MapReduce, Rag, it'reate} Auto |
| --structured | -s Використовує режим JSON} false |
| --focus } Фокус-вправа на режим raG сяє None' s none
| --query | -q Режим передач замість узагальнення} Жодного}
| --model ♪ Ollama модель, яку слід використовувати ♪ llama3.2:3b |
| --verbose | -v біса Показувати детальний поступ з живим UI00 false |
| --config | -c Шлях до файла налаштування } Авто- }
| --output-format | -o } Вихідний формат: Консоль, Текст, Маркада, Json} Console |
| --output-dir }Д_ каталог для файлів виходів} Поточна}
| --extensions | -e ♪ File strations для пакетного режиму} Всі маски голінга}
| --recursive | -r ♪ false |
| --template | -t шаблон rece (типовий, скорочений, куль, виконавчий тощо) default |
| --words | -w кількість слів (позаді шаблоном)} 1) типово}
--embedding-backend Сервер wizard: Onx, Ollama} Onnx |
|
|---|---|
--web-mode Режим веб- сторінки: простий, " Playwright" Simple |
|
--analyze |
-a біса Виконувати аналіз якості з резюме false |
Найкраще для детального резюме з повним покриттям документів.
docsummarizer -f document.pdf -m MapReduce -v
Як це працює:
Ієрархічне відновлення довгих документів:
У дуже довгих документах, де об' єднані підсумки шматків перевищують контекстне вікно моделі, MpReduction автоматично використовує ієрархічне зменшення:
100 chunks → 100 summaries → 5 batches → 5 intermediate summaries → final
За допомогою цього пункту можна зберегти повний обкладинок документа незалежно від тривалості - кожен шматок додає до остаточного резюме. Інструмент оцінить позначення (~4 chars/ entry) і призначення за використання 60% контекстних вікон на проходження зменшення.
Pros: Швидка, повна обкладинка, паралельна обробка, керує будь- якою довжиною документа Консептиди: Може пропустити поперечні з' єднання, повільніші для дуже довгих документів
Найкраще, коли вам потрібно зосередитись на конкретних темах або мати поставлене запитання.
docsummarizer -f document.pdf -m Rag --focus "pricing and payment terms" -v
Як це працює:
Коли використовувати RAG над MapReduction:
} core Mode} |----------|-----------| ♪ "Summarize this entire document" ♪ MapRece} ♪ What does this says about security?) біса сягає Підручник з 500-сторінкових сторінок, потрібен будь- який рядок, що відповідає будь-якій карті (hierarchical) Підручник з 500-сторінкових сторінок, потрібен специфічний секція сяГС ♪00_00] AND AND AND AND AND AND AND AND TO THE AND AND AND AND AND
RAG - це неDescription of a condition. Do not translate key words (# V1S #, # V1 #,) щодо роботи з довгими документами - MapReduction ручки з ієрархічним зменшенням. Про RAG можна дізнатися з розділу Фільтрування з практичністю: якщо ви бажаєте ігнорувати 90% документа і зосередитися на тому, що має значення для вас.
Pros: Фокусування теми, семантичне розуміння, індекс використання, швидше для запитів з фокусуванням Консептиди: Може бракувати вмісту поза зосередженою зоною, потребує Qdrant, повільне початкове індексування
Лучший для сюжетных документов, где контекст движется по всему.
docsummarizer -f story.pdf -m Iterative -v
Попередження: Повільніше і може призвести до втрати контексту на довгих документах ( >10 шматків).
Передня частина (попередня частина) |---------------|------|------|-----| Територія (50+сторінки)} + + + + + + + + + + 00: 00: 00: 00: 00:00:00:00 ♪ Novel/Narrate сягнув кінця рядка ♪
|--------------|-----------|-------| | Fiction/ Narrative } MapRece} }Вимагає sequential context } | Технічні документи } І мапРеод для огляду, SEG для специфічних | Legal/Contacts Місто/ М. | Підручники Зазвичай, запит на специфічні особливості
Д_ д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. |---------------|-----------|-----|-------| Д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. ст. ст. Гортаючий 50 сторінок, 45 см, 30 см, швидше, якщо зосереджений на чомусь. 200 сторінок * 3 * 3 * 1/2 * . 500+сторінок] 10-15/год 2/3 дріть
docsummarizer config --output myconfig.json
Налаштування буде автоматично відкрито з:
--config optiondocsummarizer.json у поточному каталозі.docsummarizer.json (прихований файл)~/.docsummarizer.json (Додому користувача)Приклад docsummarizer.json:
{
"embeddingBackend": "Onnx",
"onnx": {
"embeddingModel": "AllMiniLmL6V2"
},
"ollama": {
"model": "llama3.2:3b",
"embedModel": "mxbai-embed-large",
"baseUrl": "http://localhost:11434",
"temperature": 0.3,
"timeoutSeconds": 1200
},
"docling": {
"baseUrl": "http://localhost:5001",
"timeoutSeconds": 1200,
"pdfBackend": "pypdfium2",
"pagesPerChunk": 10,
"maxConcurrentChunks": 4,
"enableSplitProcessing": true
},
"qdrant": {
"host": "localhost",
"port": 6333,
"collectionName": "documents"
},
"processing": {
"maxHeadingLevel": 2,
"targetChunkTokens": 1500,
"minChunkTokens": 200,
"maxLlmParallelism": 2
},
"output": {
"format": "Console",
"verbose": false,
"includeTrace": false
},
"webFetch": {
"enabled": false,
"mode": "Simple",
"timeoutSeconds": 30,
"userAgent": "Mozilla/5.0 DocSummarizer/1.0"
},
"batch": {
"fileExtensions": [".pdf", ".docx", ".md", ".txt", ".html"],
"recursive": false,
"continueOnError": true
}
}
Передбачається, що це буде час, коли ви познайомитеся з програмою і познайомитеся з нею.
|--------|---------|-------------|
| maxLlmParallelism +8 * + + [LM] - черги (Ольяма, отже, вищі значення просто у черзі) *
| maxHeadingLevel Д_ д. д. д. д. д. д. д. д. д. д. ст. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д.
| targetChunkTokens ♪ 0 (автоматично)} Розмір цілі. 0 = авто- обчислення (~25% контекстного вікна)
| minChunkTokens * 0 (автоматично)} Мінімальний перед об' єднанням. 0 = 1/8 цілі
## Executive Summary
- Key finding 1 with specific details [chunk-0]
- Important point 2 with numbers and dates [chunk-3]
- Critical requirement 3 [chunk-5]
## Section Highlights
- Introduction: Overview of the system architecture [chunk-0]
- Requirements: Technical specifications detailed [chunk-3]
...
## Open Questions
- What is the timeline for Phase 2?
- How does the fallback mechanism work?
### Trace
- Document: document.pdf
- Chunks: 12 total, 12 processed
- Topics: 5
- Time: 21.4s
- Coverage: 100%
- Citation rate: 1.20
Межі траєкторії: Обкладинка (% sections), Частота цитування (citations/ bulet), Оброблені біти (RAG може пропустити деякі).
Mode +Використовуйте
|-------|------|-------|---------|----------|
| qwen2.5:1.5b Д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д.
| gemma3:1b 815/5 * Time (~10s) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
| llama3.2:3b } 2GB} Носій (~15s)} Дуже благодійство Типовий - Врівноважений погляд.
| ministral-3:3b 9GB} Середній (~20s)} Дуже гладка}Чудово- з' єднана}
| llama3.1:8b ♪----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Підказка: для швидших підрахунків (~3s vs ~15s), використовувати
--model qwen2.5:1.5b. Для критичних документів, де якість важливіша, використовуйте--model llama3.1:8b.
# Clone the repository
git clone https://github.com/scottgal/mostlylucidweb.git
cd mostlylucidweb/Mostlylucid.DocSummarizer
# Build
dotnet build
# Run
dotnet run -- --help
Для виконання завдань без потреби встановлено. NET- runtime:
# Build self-contained executable (Windows x64)
dotnet publish -c Release -r win-x64 --self-contained
# Build for Linux
dotnet publish -c Release -r linux-x64 --self-contained
# Build for macOS
dotnet publish -c Release -r osx-x64 --self-contained
Вивід: bin/Release/net9.0/<runtime>/publish/docsummarizer
ollama serveollama listdocker run -p 5001:5001 quay.io/docling-project/docling-serve--mode Rag)docker run -p 6333:6333 -p 6334:6334 qdrant/qdrantСимптоми: Позначки вказують на луну запиту (" Повернути лише позначки ," " Це правило... ") замість резюме вмісту.
Причина: Модель бореться з пропозицією або змістом занадто довго.
Виправити: Типове qwen2.5:1.5b добре обробляє більшість документів. Для сумнівних документів спробуйте --model llama3.2:3b. Див. Рекомендації для моделей.
Якщо резюме видається загальним або не посилається на специфічний вміст:
Citation rate у виводі трасування--mode Rag) підсумовування на отриманих шматках--verbose щоб побачити, які шматки оброблятимутьсяЯкщо немає резюме [chunk-N] Цитата:
llama3.2:3bCitation rate у рівнях - вищі значення вказують на кращу здатність відслідковуватиqwen2.5:1.5b для швидкості, llama3.2:3b для балансу, llama3.1:8b для якостіmaxLlmParallelism якщо час очікування триває© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.