JustOCR
← All guides

JustOCR guide

What structured table OCR actually means

Learn how Markdown and HTML tables differ from cell-level OCR JSON, spans, geometry and confidence, and choose the right output for reading or data extraction.

Table-preserving text and a cell-level dataset serve different jobs. A reviewer may need only rows and headers. Software that highlights a disputed number, records its coordinates or routes low-confidence cells for checking needs an explicit cell schema.

JustOCR fits a reading-and-review workflow: semantic Markdown/HTML tables with whole-table source boxes. Its JSON doesn't contain explicit per-cell objects, geometry or confidence. For cell-addressable output, compare Textract's table blocks7 and Azure's cell schema40.

First layer: content a person can read

Markdown commonly expresses a grid with pipe-separated rows. HTML represents rows and cells with elements such as tr, th and td, and can represent merged headers with span attributes.41 A renderer can display that content as a table rather than a sequence of loosely aligned words.

That is useful structure. It can retain the relationship between a line-item label and the year columns beside it. HTML can also give a parser a starting point for a spreadsheet grid. Neither format establishes that OCR read every digit correctly.

This example shows the format only; it isn't a JustOCR result or an accuracy test:

<table>
  <tr><th>Item</th><th>2025</th><th>2024</th></tr>
  <tr><td>Cash</td><td>1,200</td><td>980</td></tr>
</table>

The markup identifies where Cash sits in the rendered grid. It doesn't say where the figure 1,200 appears on the source page, or how certain the recognizer was.

Second layer: cells software can address

A cell-level response gives an application an explicit object for each position. Useful fields include row and column indices, row and column spans, content, and a reference back to the original document.

Textract's CELL blocks provide indices, spans, geometry, confidence and relationships to content blocks; merged cells have a separate representation.7 Azure's DocumentTableCell exposes indices, spans, content and bounding regions.40 Those contracts support code that addresses a specific value rather than reparsing a rendered table.

Google's schema needs a qualification. Form Parser documentation says its table extraction recognizes conventional tables without row- or column-spanning cells, so those span values remain one.19 A field's existence in a shared API schema doesn't prove a processor handles complex merged headers.

For a financial database, request a sample response before choosing the service. Check whether the year, Group/Company category and note number can remain attached to each amount through the import step.

Geometry answers where; confidence answers a different question

A whole-table bounding box lets a viewer highlight the relevant region. Per-cell polygons can support a smaller highlight around one field. Text offsets into the recognized document can help link a cell to extracted text. These references aren't interchangeable.

A JustOCR table's source box covers the whole table. Parsing its HTML into cells later won't recover source coordinates for each value.

Confidence also has a unit. Textract supplies confidence on cell blocks.7 Azure Layout reports word confidence, but the cited DocumentTableCell schema has no cell-confidence property.1340 Don't describe a word score, field score or page average as if it measured every cell.

A high score doesn't settle whether a number belongs to the correct year. Review a sample where the characters are legible but the header spans several columns. The test should check association as well as transcription.

Mistral belongs in the table-content comparison

Mistral OCR lets callers choose inline Markdown tables or separate Markdown/HTML table content. Current documentation also supports structural blocks and confidence at page, block or word granularity.24 It's inaccurate to dismiss its output as plain unlocated text.

Its standard documented table representation still differs from Textract's cell-object relationships. Pick it when the Markdown/HTML workflow suits the application, then inspect the actual response for any provenance fields the downstream task needs. Version and options matter; record them with the sample.

Download and copy features need their own test

An OCR JSON file can contain an HTML string. The file extension alone tells you little about the table contract.

JustOCR's downloads include Markdown, JSON and previews.1 For a spreadsheet handoff, test the copy or import path you intend to use. Table-preserving output doesn't establish native XLSX export or correct expansion of every merged cell.

Test a blank leading cell, a multiline label and a header spanning two columns. Paste the result into the spreadsheet you actually use. Check the positions rather than assuming a successful clipboard operation means a correct grid. Keep displayed text separate from normalized numbers so parentheses, dashes and leading zeros survive review.

Match the output to the next person or program

For an analyst reading source pages, a table-preserving viewer can remove the need to build a custom review screen. For a pipeline recording one auditable value per field, cell metadata may justify the additional setup. A useful procurement requirement names the next action: read, copy, import, highlight or verify.

Try JustOCR with a public or redacted PDF containing the headers and table layouts you need. Review current pricing and the workspace's submission instructions, then inspect both the rendered table and downloaded JSON before relying on either.

Sources

View the sample files and compare the downloadable formats.