---
title: "Slides: Structuring the Unstructured - Cedric Clyburn, Red Hat"
category: "slides"
video_id: "-x5GEVnkuRw"
sourceLabels: ["Public YouTube video frames", "Public YouTube metadata"]
---

# Slides: Structuring the Unstructured - Cedric Clyburn, Red Hat

## Source Video
[Structuring the Unstructured - Cedric Clyburn, Red Hat](https://www.youtube.com/watch?v=-x5GEVnkuRw)

## Relationship To World's Fair 2026
These slides are extracted from a public AI Engineer YouTube video connected to World's Fair 2026. Speaker-matched clips are supporting context unless later confirmed as exact session recordings; official livestream recordings are day-level/event-level source material.

## Related Scheduled Sessions
- No individual scheduled session mapping has been assigned yet; treat this as an event livestream deck.

## Extracted Slides
![[assets/slides/-x5GEVnkuRw/slide-002.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-002.html)
- AI slide classifier: `content_slide` confidence `0.97`
- Text source: agent_vision.

Slide text:

> We've got a lot to cover today!
> Wait, so 85% of the world's data is... unstructured?!

![[assets/slides/-x5GEVnkuRw/slide-003.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-003.html)
- AI slide classifier: `content_slide` confidence `0.96`
- Text source: agent_vision.

Slide text:

> We've got a lot to cover today!
> But current solutions are proprietary, and require sending your private data!
> let's learn about extraction, parsing, chunking, and much more!
> So, how can we easily parse charts, graphs, tables, etc to formats

![[assets/slides/-x5GEVnkuRw/slide-004.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-004.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: agent_vision.

Slide text:

> Data is the key ingredient behind AI applications!
> Technical Documentation
> Meeting Minutes
> Financial Documents

![[assets/slides/-x5GEVnkuRw/slide-005.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-005.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: agent_vision.

Slide text:

> Data is the key ingredient behind AI applications!
> Technical Documentation
> Meeting Minutes
> Financial Documents
> Knowledge Base Articles
> Powering:
> RAG (Document Q&A)
> Fine-Tuning
> etc.
> + much more!

![[assets/slides/-x5GEVnkuRw/slide-006.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-006.html)
- AI slide classifier: `content_slide` confidence `0.97`
- Text source: agent_vision.

Slide text:

> Data processing & prep is quite important!

![[assets/slides/-x5GEVnkuRw/slide-007.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-007.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — Dense embedded text excerpts and a highlighted quote make this OCR-suitable.

Slide text:

> Data processing & prep is quite important!

![[assets/slides/-x5GEVnkuRw/slide-008.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-008.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: agent_vision.

Slide text:

> So, let’s try a simple PDF parser...
> Very fast and cheap
> Incomplete
> Loss of structure
> Noisy
> Unfit for most use cases

![[assets/slides/-x5GEVnkuRw/slide-009.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-009.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — The slide contains multiple dense document screenshots and small table text that are better suited to OCR.

Slide text:

> But powerful frontier models? Not bad!
> Good quality and robustness
> Expensive (for now)
> Hard to achieve consistent structured output
> Possible hallucinations
> Very costly at scale
> not always faithful

![[assets/slides/-x5GEVnkuRw/slide-010.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-010.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: agent_vision.

Slide text:

> Maybe there’s a middle ground... Welcome to Docling!

![[assets/slides/-x5GEVnkuRw/slide-011.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-011.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: agent_vision.

Slide text:

> Docling: Get your documents ready for gen AI
> An open source processor using advanced vision models + OCR
> Parsing of multiple document formats incl. PDF, DOCX, XLSX, HTML, images, and more
> Advanced PDF understanding with page layout, reading order, table structure, code, formulas, image classification, etc
> Plug-and-play ecosystem integrations
> Local execution for sensitive data and air-gapped environments

![[assets/slides/-x5GEVnkuRw/slide-012.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-012.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — The slide has a complex flowchart, small table text, and dense metrics that are better handled by OCR.

Slide text:

> Docling: Scale, cost, and performance
> 
> 475,019,140 PDFs parsed end-to-end
> 1,733 languages represented
> ~3 trillion tokens (~2,918B) extracted
> 3.65 TB of high-quality, deduplicated text
> Data spanning 2013-2025 across 105 CommonCrawl snapshots
> 
> 918/368*750/35 = 50
> Docling is 50 times more
> cost-effective than VLMs!!

![[assets/slides/-x5GEVnkuRw/slide-013.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-013.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: advanced OCR `rapidocr-live/bright-screen/contrast` reconciled by agent.
- OCR decision: ready — Dense multi-panel slide with small code, chart, table, and paragraph text.

Slide text:

> Docling: More than simple Document Conversion
> 
> Quarter  Agency  Non-Agency  MSR  Mortgage Loan Conduit
> Q1-15  45%  34%  10%  11%
> Q2-15  44%  43%  11%  12%
> Q3-15  41%  30%  12%  13%
> Q4-15  35%  27%  14%  16%

![[assets/slides/-x5GEVnkuRw/slide-014.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-014.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: advanced OCR `rapidocr-live/center-82/contrast` reconciled by agent.
- OCR decision: ready — Document extraction example with code, form image, and structured output text that benefits from OCR.

Slide text:

> Docling: More than simple Document Conversion
> 
> invoice_dict = {
>   'bill number': 'string',
>   'total invoice price': 'float',
>   'currency of total invoice price': 'string',
>   'name of invoice addressee': 'string',
>   'name of invoice sender': 'string'
> }
> 
> {
>   'bill number': '01234',
>   'total invoice price': 550,
>   'currency of total invoice price': 'USD',
>   'name of invoice addressee': 'Jonathan Patterson',
>   'name of invoice sender': 'Eventure Event Planner'
> }

![[assets/slides/-x5GEVnkuRw/slide-015.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-015.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — Repository screenshot with many small UI labels and file names that are better handled by OCR.

Slide text:

> bm-granite-community / docling-workshop
> 
> docling-workshop
> Source code for Docling Workshop
> 
> .github
> docs
> notebooks
> scripts/regenerate_fixtures
> src

![[assets/slides/-x5GEVnkuRw/slide-016.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-016.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Notebook/code slide with dense imports and code cells that are OCR-suitable.

Slide text:

> Import Essential Components
> 
> from pathlib import Path
> 
> # Core Docling imports
> from docling.document_converter import DocumentConverter
> from docling.datamodel.base_models import InputFormat
> from docling.datamodel.pipeline_options import PdfPipelineOptions
> from docling.document_converter import PdfFormatOption
> 
> # For advanced features
> from docling_core.types.doc import ImageRefMode, PictureItem, TableItem, TextItem, DoclingDocument
> 
> # For data processing and visualization
> import matplotlib.pyplot as plt
> 
> # Create output directory
> output_dir = Path("output")
> output_dir.mkdir(exist_ok=True)
> 
> Basic Document Conversion
> Minimal Example
> The simplest way to convert a document:

![[assets/slides/-x5GEVnkuRw/slide-017.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-017.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Notebook and PDF viewer screenshot with embedded code and small text requiring OCR.

Slide text:

> Your turn: Try your own document
> 
> What should I try?
> 
> Try changing the URL below to a different document.
> 
> docling_paper = "https://arxiv.org/pdf/2501.17887"

![[assets/slides/-x5GEVnkuRw/slide-018.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-018.html)
- AI slide classifier: `content_slide` confidence `0.99`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Notebook slide with code and multi-section text that is better extracted via OCR.

Slide text:

> Export Formats and Options
> 
> Docling supports multiple export formats with various options:
> 
> # Export to different formats (various options available, but called with default ones)
> markdown_text = doc.export_to_markdown()
> html_text = doc.export_to_html()
> json_dict = doc.export_to_dict()
> doc_tags = doc.export_to_doctags()
> 
> # Save different formats (various options available, some shown)
> doc.save_as_markdown(
>     image_mode=ImageRefMode.PLACEHOLDER,
>     image_placeholder="<!-- my image placeholder -->",
>     ...
> )

![[assets/slides/-x5GEVnkuRw/slide-019.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-019.html)
- AI slide classifier: `content_slide` confidence `0.91`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Dense notebook screenshot with tables and small text.

Slide text:

> Documents into AI-Ready Data with Docling > M4 Working with Tables > M4 Basic Table Export
> 
> # Save as HTML
> with open(output_dir / f"table_{table_idx}.html", "w") as fp:
>     fp.write(table.export_to_html(doc=table_doc))
> 
> Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.
> Document contains 8 tables
> 
> ## Table 0
> Shape: (4, 4)
> 
> General | LLaVa-OneVision | Cambrian-7m
> 0 General | 276.5K | 881.3K | 1.8M
> 1 Language/Captioning | 202.1K | N/A | N/A
> 2 Math/Science/Reasoning | 178.4K | 318.0K | 354.5K
> 3 Image Comparison | 188.9K | N/A | N/A
> 
> Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.
> 
> ## Table 1
> Shape: (4, 4)
> 
> General | LLaVa-OneVision | Cambrian-7m
> 0 General | 812.7K | 2.0M | 7.9M
> 1 Language/Captioning | 203.3K | 1.2M | 1.8M
> 2 Math/Science/Reasoning | 765.1K | 464.8K | 802.0K
> 3 Image Comparison | 237.9K | N/A | N/A

![[assets/slides/-x5GEVnkuRw/slide-020.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-020.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/right-72/opencv-adaptive` reconciled by agent.
- OCR decision: ready — Code-heavy slide screenshot with small body text.

Slide text:

> Inspecting Picture Content
> 
> Docling will automatically generate captions and extract text content from extracted images. Let's take a look at what is extracted:
> 
> def inspect_pictures_with_images(doc: DoclingDocument, image_size=(6, 4)):
>     """Display pictures inline with their text content."""
>     for idx, picture in enumerate(doc.pictures):
>         print(f"\n{'='*60}")
>         print(f"Picture {idx}")
>         print(f"{'='*60}")
> 
>         # Display the image
>         try:
>             img = picture.get_image(doc)
>             if img:
>                 plt.figure(figsize=image_size)
>                 plt.imshow(img)
>                 plt.axis("off")
>                 plt.title(f"Picture {idx}")
>                 plt.show()
>         except Exception as e:
>             print(f"Could not display image: {e}")
> 
>         # Display metadata
>         caption = picture.caption_text(doc)
>         if caption:
>             print(f"\nCaption: {caption}")

![[assets/slides/-x5GEVnkuRw/slide-021.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-021.html)
- AI slide classifier: `content_slide` confidence `0.97`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — Code-heavy notebook screenshot with small UI text and embedded document preview.

Slide text:

> Visualizing Document Layout with Bounding Boxes
> 
> In order to understand how each part of the document is extracted, let's visualize the extracted elements.
> We can do that by using one of Docling's built-in visualizers:
> 
> from docling_core.transforms.visualizer.layout_visualizer import LayoutVisualizer
> layout_visualizer = LayoutVisualizer()
> page_images = layout_visualizer.get_visualization(doc=img_doc)
> 
> num_pages_to_viz = 2  # first N pages to visualize
> pages_to_viz = list(page_images.keys())[:num_pages_to_viz]
> for page in pages_to_viz:
>     display(page_images[page])

![[assets/slides/-x5GEVnkuRw/slide-022.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-022.html)
- AI slide classifier: `content_slide` confidence `0.96`
- Text source: advanced OCR `rapidocr-live/bright-screen/opencv-adaptive` reconciled by agent.
- OCR decision: ready — Dense code screenshot with small parameter text and API configuration details.

Slide text:

> We can also run it using an OpenAI-compatible API like Ollama.
> 
> from docling.datamodel.pipeline_options import PictureDescriptionApiOptions
> 
> if RUN_LOCAL_OLLAMA:
>     # Configure enrichment pipeline
>     enrichment_options = PdfPipelineOptions(
>         do_picture_description=True,
>         enable_remote_services=True,
>         picture_description_options=PictureDescriptionApiOptions(
>             url="http://localhost:11434/v1/chat/completions",
>             params={
>                 "model": "granite3.2-vision:2b",
>                 "max_completion_tokens": 200,
>             },
>             prompt="Give a detailed description of what is depicted in the image",
>             timeout=60,
>         ),
>         generate_picture_images=True,
>         images_scale=1.0,
>     )
> 
>     converter_enriched = DocumentConverter(
>         format_options={
>             InputFormat.PDF: PdfFormatOption(pipeline_options=enrichment_options)
>         }
>     )
> 
>     enr_result = converter_enriched.convert(docling_paper)
>     enr_doc = enr_result.document

![[assets/slides/-x5GEVnkuRw/slide-023.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-023.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Diagram slide with multiple small labels and explanatory text that is better handled by OCR.

Slide text:

> How chunkless RAG works
> 
> Chunkless retrieval is a four-step loop:
> 
> Document outline
> (per-section summaries)
> 
> 1. SELECT — LLM picks the most relevant unvisited
> section by reading the outline + query.
> 
> 2. FETCH — Pull the *full text* of that section's
> subtree from the DoclingDocument.
> 
> 3. ATTEMPT — LLM tries to answer from the section text.
> Returns (can_answer: bool, response: str).

![[assets/slides/-x5GEVnkuRw/slide-024.jpg]]

- Recreated text/layout view: [open HTML recreation](/assets/slide-recreations/slides/-x5GEVnkuRw/slide-024.html)
- AI slide classifier: `content_slide` confidence `0.98`
- Text source: advanced OCR `rapidocr-live/full` reconciled by agent.
- OCR decision: ready — Continuation of a diagram slide with small labels and paragraph text; OCR is likely the cheapest accurate read.

Slide text:

> RAG actually earns its keep
> 
> 2. FETCH — Pull the *full text* of that section's subtree from the DoclingDocument.
> 
> 3. ATTEMPT — LLM tries to answer from the section text.
> Returns {can_answer: bool, response: str}.
> 
> can_answer = true
> return answer
> 
> can_answer = false
> 
> 4. ITERATE — go back to SELECT, with the visited section excluded.
> 
> Notice what's not in this picture: no chunker, no embedding model, no vector store, no top-k. The "index" is a markdown outline of the document with one summary per section, generated once offline. The "retriever" is the LLM itself, reading that outline and choosing where to look.
> 
> This only works because two things are already true about the input document:
> 1. It's a DoclingDocument — a real tree with sections, paragraphs, tables, and figures, parsed by Docling from the source PDF.
> 2. Each section already has a summary attached as metadata, written by DoclingEnrichingAgent in a one-time enrichment pass.
> 
> We'll use a fixture that already has both. If you want to run this on your own PDF, there's an optional cell a few steps down that shows you


### Hidden Non-Slide Evidence
- [`slide-001.jpg`](/assets/slides/-x5GEVnkuRw/slide-001.jpg) — `title_card` confidence `0.98`; title-only intro card; not content-heavy.

Classification audit: `raw/sources/slide-ai-classification/slides/-x5GEVnkuRw/audit.json`

## Slide-Derived Subjects To Review
Subject extraction uses video title, related session titles/descriptions, transcript context, and OCR text when available. OCR is best-effort and should be reviewed against the embedded slide images.
