NEWVectors or files. Pick a path.Start →
    Search & Discovery
    10 min read
    Updated 2026-09-07

    Why Does My Document Search Miss the Answer That Is in a Chart or Table?

    Your search indexes the words in a document and the answer you need is a bar in a chart or a cell in a table. This guide explains why text extraction drops those answers, how to test your own corpus for the gap, and the three ways to close it: chart and table extraction, page-image retrieval, and a vision-language model reading the figure.

    Document Search
    Charts
    Tables
    PDF
    Visual Document Retrieval
    OCR
    RAG

    Why does my document search miss the answer that is in a chart or table?



    Because most document search indexes the text layer of a file, and the answer you are looking for is not in the text layer. A chart is a drawing or an embedded image: its bars, lines and axis labels reach the index as a caption at best and as nothing at worst. A table survives extraction as a stream of cell values with the row and column structure stripped out, so "Q3 revenue for the EMEA region" becomes a number floating next to other numbers with no way to tell which row it belonged to. The search engine did its job on the words it was given. The words it was given did not contain the answer.

    The fix is to index what the document shows as well as what it says. That means one of three things, and often two of them together: extract charts and tables into structured text before indexing, index page images directly with a visual document retrieval model, or have a vision-language model describe each figure and index the description. The rest of this guide explains how each one works, what it costs, and how to find out which one your corpus needs.

    Where does the answer go when a PDF is turned into text?



    A PDF stores drawing instructions, embedded images and text runs positioned on a page. A text extractor keeps the text runs and discards the rest. What happens to a chart or a table depends on how it was produced:

    How the figure was madeWhat the text extractor seesWhat is lost
    Chart drawn as vector graphics (most spreadsheet exports)The axis tick labels and the legend, as loose wordsEvery bar, line and point value; which label belongs to which series
    Chart pasted as an image (screenshots, slides)Nothing, or an alt text if one was setThe whole chart
    Table drawn with ruled lines and positioned textThe cell strings in reading order, one line at a timeRow and column membership, merged headers, units in the header row
    Table in a scanned pageNothing until OCR runs; then the same loss as aboveStructure, plus any OCR errors on digits
    Number quoted in the body textThe number and its sentenceNothing, which is why body text is findable and figures are not
    Two failure modes follow from this. A retrieval miss: the page that answers the question never ranks, because the tokens that would match the query live in a chart the index cannot see. A wrong-part hit: the page ranks because of a nearby paragraph, but the passage returned to the reader or to a language model does not contain the value, so the answer is wrong or hedged. The second is the sneakier one, and it is the subject of Why Does My Search Find the Right Document but the Wrong Part of It?.

    How do I check whether my own corpus has this problem?



    Do this before choosing a fix, because the fix depends on how much of the answer surface is visual.

    1. Take twenty questions that were answered from figures. Pull them from support tickets, analyst requests or your own evaluation set. The question should be answerable only by reading a chart or a table. 2. Run them through your current search. Record whether the right page ranks in the top five, and whether the returned passage contains the value. 3. Look at the extracted text for the failing pages. Most extractors can dump their output. If the chart's values are absent and the table has collapsed into one line per cell, you have found the gap and you know which shape it takes. 4. Count figures per page across the corpus. Financial reports, scientific papers, engineering documents and slide decks are figure-heavy; contracts and correspondence are not. The count tells you whether the fix is worth running on every page or only on the pages that have figures.

    If the twenty questions mostly fail at step 2 and the extracted text at step 3 is missing the values, your search is not broken. Its input is.

    What are the three ways to make charts and tables searchable?



    Extract the figure into structured text first



    Document parsers such as Docling, PaddleOCR-VL and DeepSeek-OCR detect tables and reconstruct them as rows and columns, and the better ones emit charts as data tables or Markdown as well. The output is text, so it drops straight into the search stack you already have, and a table cell keeps its row header and column header attached, which is exactly what makes "Q3 revenue for EMEA" findable. The cost is an extra parsing pass per page and a dependence on the parser getting the layout right; complex merged headers and low-resolution scans are where it fails. The Docling technical report describes the layout and table-structure models involved, and How OCR Actually Works covers the detection, recognition and reading-order steps underneath.

    Index the page as an image



    Visual document retrieval models such as ColPali and ColQwen embed the rendered page image, not its text, so a bar chart and a table are searchable as what they look like. A query such as "which region had the highest Q3 revenue" is embedded in the same space and matched against page patches, which means the chart participates in retrieval without ever being converted to words. The ColPali paper reports strong results on the ViDoRe benchmark of visually rich documents, and the models are open weights: ColPali v1.3 and ColQwen2.5. The trade-offs are storage, since each page becomes many vectors, and the fact that retrieval finds the page while a second step still has to read the value off it. Visual Document Retrieval: How AI Agents Search Documents Without OCR covers the mechanism and the compression options.

    Have a vision-language model describe the figure



    A vision-language model can be pointed at each chart or table crop and asked to write out what it shows: the series, the axis units, the values, the trend. Index that description alongside the body text. This catches the cases parsers get wrong, such as a chart with no underlying data table, an annotated diagram, or a photograph of a whiteboard. It is the most expensive option per page, its output should be checked for invented numbers, and it works best when the model is also asked to emit the values as a table, since prose descriptions are harder to match against a numeric query. Benchmarks such as ChartQA and DocVQA measure exactly this skill, and Optical Context Compression explains why reading a page as pixels can be cheaper than it sounds.

    Which one should I use?



    ApproachBest whenCost per pageMain limitation
    Structured extraction (Docling, PaddleOCR-VL, DeepSeek-OCR)Tables dominate; you need exact cell values; your search stack is text-onlyOne parsing pass, CPU or small GPUComplex layouts and poor scans break table structure
    Page-image retrieval (ColPali, ColQwen)Figures dominate; questions are about what a page shows; you can add a vector indexMulti-vector embedding per page, more storageFinds the page, does not read the value out
    VLM figure descriptionsMixed corpora; charts without data tables; diagrams and photosOne model call per figure, the highest of the threeCan invent values; needs a check
    Most production systems combine the first two: parse tables into text for exact matches, and index page images so the charts and odd layouts are still reachable. Add descriptions only for the figure types the parser cannot handle.

    How should I chunk a document that has figures?



    Keep each figure with its caption and the paragraph that refers to it, in one chunk. Splitting on a fixed token count will put the caption in one chunk and the table body in the next, which recreates the wrong-part problem after you have paid to extract the table. A table should be one chunk with its header row repeated if it has to be split; a chart description should carry the figure number and the section heading. Multimodal Chunking Strategies goes through the rules for each document type.

    How does this work in Mixpeek?



    Mixpeek runs the three approaches as extractors over the same documents in your object storage, so you do not choose between them at ingestion. A document collection can run a parser that emits tables as structured text, a visual document retrieval model that embeds each page image, and a vision-language description of detected figures, with each output stored as a searchable field on the same document. A retriever then combines them: lexical search over the extracted table text for exact values, a feature search over page embeddings for questions about what a page shows, and a rerank stage across both. The result set carries the page number and the figure crop, so the reader or the agent sees the chart the answer came from.

    If you want to see the models involved, DeepSeek-OCR-2, Granite Docling and PaddleOCR-VL 1.6 are the parsing side, and ColPali and ColQwen2.5 are the page-image side. The comparisons of hosted options are in best document parsing tools, best PDF extraction tools and best OCR APIs.

    Frequently asked questions



    Does OCR fix this?



    OCR turns pixels into characters. It recovers the words on a scanned page, including the numbers inside a chart or table, but it does not recover the structure that gives those numbers meaning. A table needs a table-structure model on top of OCR; a chart needs either a chart-to-table step or a visual index. Treat OCR as the first step, not the fix.

    Do I need a vision-language model for every page?



    No. Run the cheap parser everywhere, and reserve the model for pages where the parser reports a figure it could not structure. On most corpora that is a small fraction of pages, and the model cost scales with the number of charts, whatever the number of documents.

    Will a bigger embedding model solve it?



    Not on its own. A text embedding model can only embed the text it is given, and the text is missing the values. Changing the extractor changes what the embedding model sees; changing the embedding model does not put the chart back.

    How do I know the extracted table is correct?



    Spot-check against the source. Pick tables with merged headers, footnotes and units in the header row, since those are the shapes parsers get wrong, and compare a handful of cells by hand. Parsers that emit a confidence score per table let you route the low-confidence ones to a vision-language model or to a person.

    Further reading



  1. Visual Document Retrieval: How AI Agents Search Documents Without OCR: the page-image approach in depth
  2. How OCR Actually Works: detection, recognition, reading order and tables
  3. Why Does My Search Find the Right Document but the Wrong Part of It?: the passage-level version of this problem
  4. Multimodal Chunking Strategies: keeping figures with their captions
  5. Best document parsing tools: hosted and open source parsers compared
  6. Managed Mixpeek

    Put multimodal search to work

    Connect a bucket and Mixpeek runs the whole multimodal search pipeline for you: extraction, indexing, and search over your own objects. No models to wire up, nothing to host.

    Start with Managed
    MVS · bring your own

    Already have vectors?

    Keep your embeddings on your own cloud and run dense, sparse, and BM25 search directly on object storage. From $25/mo.

    Start with MVS

    Run this on your own data

    Point Mixpeek at the storage you already have and search your video, images, audio, and documents the way this guide describes. Build starts at $25/mo for up to 1M vectors.

    Search your own archiveRead Docs

    Related guides

    Search & Discovery

    How Do I Debug Bad Retrieval Results in RAG and Vector Search?

    Bad retrieval fails in one of five layers (corpus, embedding space, query, filters, or fusion) and each layer's failure masquerades as the one below it. A practical debugging methodology: the five-layer checklist, why raw similarity scores mislead, stage-boundary tracing with a real silent-decimation incident, and what a retrieval explain plan should contain.

    Read guide →
    Search & Discovery

    How Do AI Agents Search Big Datasets by Navigating Clusters? (Hierarchical Cluster Search)

    Flat vector search returns top-k against one query vector, which breaks down when an agent does not know the right query, the corpus is huge and diverse, or the task is exploratory. Agentic hierarchical cluster search gives the agent a map instead: a cluster hierarchy (themes -> sub-clusters -> records) it navigates coarse-to-fine, scoring its goal against a few dozen centroids and drilling into the matching branch before running a precise retrieval at the leaf. When it beats flat ANN, the navigation loop, the cost math, the honest limits, and how to build it from clustering + composite clustering + a cluster-scoped retriever.

    Read guide →
    Search & Discovery

    How Do I Automatically Classify Content Against a Taxonomy?

    Auto-classifying images, video, documents, and audio into predefined categories at scale: the four viable methods in 2026 (zero-shot, embedding-similarity, trained head, LLM) and when each wins, how taxonomy classification differs from discovered taxonomies and metadata extraction, classifying non-text content by decomposing signals, taxonomy design rules, and the query-time reclassification pattern that avoids re-paying analysis when categories change.

    Read guide →