OCR Example
Convert PDFs with DoclingTools using forced full-page EasyOCR in Portuguese and English.
from agno.agent import Agent
from agno.tools.docling import DoclingTools
from paths import pdf_path
def run_ocr_example() -> None:
# pdf_ocr_engine accepts: auto | easyocr | tesseract | tesseract_cli | ocrmac | rapidocr
# Some engines may require extra runtime dependencies in your environment.
ocr_tools = DoclingTools(
pdf_enable_ocr=True,
pdf_ocr_engine="easyocr",
pdf_ocr_lang=["pt", "en"],
pdf_force_full_page_ocr=True,
pdf_enable_table_structure=True,
pdf_enable_picture_description=False,
pdf_document_timeout=120.0,
)
ocr_agent = Agent(
tools=[ocr_tools],
description="You are an agent that converts PDFs using advanced OCR.",
)
ocr_agent.print_response(
f"Convert to Markdown: {pdf_path}",
markdown=True,
)The example imports this helper module from the same directory:
from pathlib import Path
repo_root = Path(__file__).resolve().parents[3]
testing_resources_path = repo_root / "cookbook/07_knowledge/testing_resources"
def get_test_resource_path(filename: str) -> str:
return str(testing_resources_path / filename)
pdf_path = get_test_resource_path("cv_1.pdf")
docx_path = get_test_resource_path("project_proposal.docx")
md_path = get_test_resource_path("coffee.md")
html_path = get_test_resource_path("company_info.html")
xml_path = get_test_resource_path("patent_sample.xml")
xlsx_path = get_test_resource_path("sample_products.xlsx")
pptx_path = get_test_resource_path("ai_presentation.pptx")
image_path = get_test_resource_path("restaurant_invoice.png")
audio_video_path = get_test_resource_path("agno_description.mp4")Conversion environment
The shared runner executes every basic conversion and then OCR, so its setup includes both PDF/OCR and video dependencies. The first conversion may download document, OCR, or speech model weights. See Docling's audio/video setup.
The tools return exports as text to the agent; a prompt asking for full JSON does not enforce the final model response. For an exact export, call the relevant DoclingTools method directly. VTT export requires an installed Docling document type with export_to_vtt; otherwise the tool returns an unsupported-export error.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno "docling[asr]" "docling-slim[format-video]" easyocr openaiExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Clone Agno
Clone the pinned Agno source and run the remaining commands from its root:
git clone https://github.com/agno-agi/agno.git
cd agno
git checkout d703c34f3abf3c41275d3fb2da6e0518a8881f24Install FFmpeg
Install the FFmpeg system package required for the MP4-to-VTT example and verify it is available:
ffmpeg -versionRun the example
Run the example from the repository root:
python cookbook/91_tools/docling_tools/run.pyThis entry point runs both the basic and OCR examples.
Full source: cookbook/91_tools/docling_tools/ocr_example.py