ParseMyStatement v1.1 — OCR 4.0 with Block-Level Confidence & Structural Metadata

ParseMyStatement v1.1 introduces OCR 4.0 pipeline with Mistral's include_blocks=True and confidence_scores_granularity='page'. Block-level positioning, per-page confidence scoring, and low-confidence detection improve extraction yield by 6% and cut junk rows by 96%.

July 15, 20268 min read

ParseMyStatement v1.1 — OCR 4.0 with Block-Level Confidence & Structural Metadata

We are excited to announce ParseMyStatement v1.1, a significant upgrade to our OCR pipeline that introduces block-level structural metadata, per-page confidence scoring, and automated low-confidence detection.

This release represents a leap forward in transparency and reliability for automated bank statement extraction. For the first time, users and developers can inspect exactly how the OCR engine interpreted each page, where it was confident, and which pages may need human review.

What's New

1. Block-Level Structural Metadata

Every OCR'd page now returns a blocks array with typed elements:

{
  "ocr_metadata": {
    "0": {
      "blocks": [
        {
          "type": "title",
          "content": "## HSBC Live+ Credit Card",
          "top_left_x": 46,
          "top_left_y": 125,
          "bottom_right_x": 204,
          "bottom_right_y": 142
        },
        {
          "type": "table",
          "content": "<table>...</table>",
          "table_id": "tbl-0.html",
          "top_left_x": 46,
          "top_left_y": 249,
          "bottom_right_x": 656,
          "bottom_right_y": 852
        }
      ]
    }
  }
}

Block types include: title, text, table, list, code, equation, caption, header, footer, signature, image. This enables downstream applications to:

  • Filter headers/footers before LLM normalization
  • Validate table boundaries against extracted transaction counts
  • Reconstruct page layout for audit and compliance workflows
  • Target specific regions of a document for re-processing

2. Per-Page Confidence Scores

Each page now reports:

{
  "confidence_scores": {
    "average_page_confidence_score": 0.9842,
    "minimum_page_confidence_score": 0.1937
  }
}
  • Average confidence — overall OCR quality for the page
  • Minimum confidence — lowest-confidence character/word on the page (useful for spotting problematic regions)

Pages with an average confidence below 0.7 are automatically flagged in the low_confidence_pages array, and a warning is issued in the response.

3. Intelligent Low-Confidence Page Detection

The converter now automatically:

  1. Calculates average confidence per page
  2. Flags any page below the 0.7 threshold
  3. Adds a human-readable warning: "Page 5 OCR confidence low (0.65)"
  4. Populates low_confidence_pages: [5]

This gives you a structured, machine-readable signal for quality control without needing to manually inspect every page.

Performance Benchmarks

We ran rigorous A/B tests across 4 scenarios comparing v1.0 (baseline) against v1.1 (blocks+confidence). All tests used the same LLM model (DeepSeek-V4-Flash) and same system prompt — only the OCR pipeline changed.

Test 1: Generated Eval Statements (3 banks, 81 transactions)

| Metric | v1.0 | v1.1 | |

Stop retyping bank statements

Convert PDF bank statements to clean CSV, Excel, or JSON in 30 seconds

Try ParseMyStatement Free

FAQ

What does the v1.1 OCR upgrade include?

v1.1 passes include_blocks=True and confidence_scores_granularity='page' to Mistral OCR, returning block-level positioning (type, bounding box, content), per-page average and minimum confidence scores, and a low_confidence_pages alert list for pages scoring below 0.7.

Does v1.1 change the output format?

No. All existing fields (transactions, balance_check, bank_name, etc.) remain identical. Two new optional fields are added: ocr_metadata (per-page block data + confidence scores) and low_confidence_pages (array of 1-indexed page numbers with confidence < 0.7).

How much faster is v1.1?

In our benchmarks on a 159-page HSBC Full statement, v1.1 processed 46% faster than v1.0 (96.5s vs 178.3s in forced OCR mode). The cleaner block-aware OCR output reduces LLM parsing errors and retries.

Does v1.1 extract more transactions?

Yes. On a 159-page scanned statement, v1.1 extracted 880 transactions vs 829 for v1.0 (+6.1%). More importantly, junk rows with no amount data dropped from 48 to just 2 (-96%).

Is the v1.1 API backward compatible?

Fully backward compatible. All existing integrations continue to work unchanged. The new ocr_metadata and low_confidence_pages fields are additive and optional in the response.