Key takeaways
- OCR turns pixels into text. It does not know that a number belongs to a UN number or that a table row is an ingredient.
- SDS failures are quiet: a missed ingredient or a swapped packing group looks like valid data.
- Evaluate a tool on your own documents, with a fixed schema, null handling, and a confidence signal you can act on.
Text is not data#
General OCR and document-AI services return text, sometimes with layout. For an SDS, text is the starting point, not the result. Your system needs un_number = 1090, not the string "1090" somewhere in a block. Turning one into the other needs a model of what an SDS is: 16 sections, known fields in each, and the habits of suppliers who format them in different ways.
Where it breaks#
- Composition tables. Ingredient rows have a name, CAS number, EC number and a concentration range. Tables that split across pages or merge cells produce rows with values in the wrong columns.
- Units and ranges. "<= 25 %", "10-20 %" and "ca. 5" all appear in the concentration column, and exposure limits mix ppm, mg/m3 and time-weighted averages.
- Language. Section titles are translated, and the order and wording differ by region. A parser keyed on English headings fails on German or Swedish documents.
- Silent errors. A tool that returns a plausible but wrong packing group does not raise an error. Without a confidence signal you find out during an audit.
- Prompt-only parsing. Asking a general language model for "the hazards" returns different shapes on different runs. Without a fixed schema, every downstream integration absorbs the variation.
A short checklist for any extraction tool#
- Test on your own PDFs, including your worst ones: scans, old formats, other languages.
- Check the output shape. Is it the same on every call, with documented field names and a schema you can validate against?
- Check null handling. Does a missing value come back empty, or guessed?
- Check for a confidence signal and a list of warnings, and decide what you do with low-confidence records.
- Check failure billing. Are failed documents charged?
- Check data handling. Where is the document processed, and how long is it kept?
SafetyDataSheetAPI is built around these points: a fixed 16-section schema, null for missing values, a confidence score and warnings on every response, and no charge for failed extractions. Our accuracy methodology describes how we measure, and the comparison with generic OCR goes into more detail.
Frequently asked questions
Is OCR still needed?
For scanned documents, text has to be read from the image first. The point is that OCR alone does not produce the structured fields a compliance workflow needs.
Can I just prompt a language model?
You can, and many teams start there. You then own the schema, the validation, the retries and the review rules. A fixed schema service gives you those from the first call.