Case studyHealthcare, supplementary health insurance20263 min read

Choosing a health-card reading engine on evidence, not on a demo

The choice of a reading engine for supplementary health insurance cards rests on a reproducible benchmark, not on a sales demo.

SantécieAI · Project that integrates AI or trains teams to use itDemonstrator
Contents7

At a glance

In thirty seconds
  1. StakeBefore handing supplementary health card reading to an engine, Santécie needed to know which one is reliable, and where the data is allowed to go.
  2. MechanismA shared core drives versioned Python pipelines from NestJS, and every run produces immutable, therefore comparable, artefacts.
  3. ProofEleven architecture decisions, an analysis of OCR offers under HDS constraints and 206 automated tests, in a repository I am the sole author of.
  4. ImpactSantécie can decide between local processing, a hosted open-weight model and an external service on measurements, before committing to a vendor.
  5. LimitsIt is a demonstrator: no recognition rate is published, and it claims neither production quality nor medical compliance.
Client
Santécie
My role
Project owner and architect
Setting
Through a partnerSilico
Team
Solo · 1 person
Technologies
Mock
Annotation tool: a specimen third-party payment card on the left, the beneficiary’s business fields on the right
The annotation tool that builds the ground truth: specimen card on the left, business fields on the right, each of which can be marked unknown. Rendered on fictional data

The starting point

Reading a supplementary health insurance card looks simple. In practice, formats vary from one insurer to another, photos are taken in imperfect conditions, and above all the data is health data: where it is processed, by whom and for how long is not an implementation detail1.

HDS stands for hébergement de données…

HDS stands for hébergement de données de santé, the certification required in France to host health data on behalf of a third party. It guided the analysis of hosted OCR offers.

The temptation with this kind of subject is to plug in the best-known service and judge it on a few examples. The project takes the opposite stance: first build something to compare with, then choose.

What I built

The target is a tool that reads the card on the workstation and proposes business fields, each optional and editable, which a person checks before any confirmation. To choose the engine that will make it possible, I built the benchmark first.

Every pipeline is versioned and produces artefacts that never change again: you compare two engines, or two settings, without ambiguity. I separated control (NestJS) from execution (Python) and isolated inference from the workers, to change models without touching the rest. An annotation tool builds the ground truth, field by field, on specimen cards.

What the evidence shows

A large part of the work is written down: the architecture decisions, an analysis of hosted OCR vendors and their confidentiality commitments, notes on open-weight model inference. They let the client understand why an option is kept or dropped, and let a new developer pick the project up without rediscovering everything2.

Sole author of the repository: 207…

Sole author of the repository: 207 commits, from 14 August to 5 October 2026.

The code is checked by an automated test suite3. Comparisons are read in notebooks, from the immutable artefacts of each campaign.

206 tests pass locally as of…

206 tests pass locally as of 7 October 2026. They check the code, not reading quality.

Mock
Marimo notebook comparing two campaigns of a pipeline, source by source
A marimo notebook compares two campaigns of the same pipeline, source by source, on a synthetic set. This capture illustrates the comparison mechanism on synthetic invoices, not on cards. Rendered on fictional data
recorded architecture decisions
11
automated tests passing locally
206

What it changes

The question “should the data leave the workstation?” is settled on measurements, not on a sales promise. The target of the next benchmark, on dedicated GPU infrastructure, is decided; its results will feed the choice between local processing, a hosted open-weight model and an external service, with zero retention if an external API is used for the benchmark.

Limits

  • No recognition rate is published: the results of the benchmark on dedicated infrastructure are not available yet.
  • The screenshots show the annotation tool and a comparison notebook on synthetic data, not a finished product.
  • Real samples stay private and never leave the client’s perimeter.
  • The system does not check entitlements and makes no automated decision.

Share and reuse

The link, the plain text and visuals ready for LinkedIn.

Embed this card

Paste this code into a web page to show a card for this content.

<iframe src="https://mc-stud.io/embed/en/work/scie-ocr-health-insurance-cards" title="Choosing a health-card reading engine on evidence, not on a demo" width="100%" height="360" style="border:0;border-radius:16px;max-width:640px" loading="lazy"></iframe>

Let’s talk about what AI could change for you

A 30-minute discovery call, by video and with no commitment, to talk about your project, your constraints and the best next step.

contact@mc-stud.io