Skip to main content

Extract data from certificates of analysis

Before a shipment of raw material moves onto a production line, someone in quality has to read its Certificate of Analysis and decide whether the batch conforms. Issued by the supplier for a specific lot, usually as a PDF, a CoA lands with an incoming-inspection team working under GMP or HACCP rules at a food, pharmaceutical, or chemical manufacturer, which clears dozens a day against a purchase specification. Each certificate ties a batch or lot number to a product, names the testing laboratory, and lists a grid of tested parameters: for a lot of a solvent that might be assay purity, water content, and residue on evaporation, each with a measured result, a specification minimum and maximum, and a pass or fail verdict, while a pharmaceutical excipient is judged against its United States Pharmacopeia monograph. Closing the document are an overall disposition and the signature of the authorized inspector who released it. What resists a simple table dump is that the result grid and the specification limits carry the meaning. One parameter, assay, reports a result of 99.7% against a specification of 99.0 to 101.0%, and the pass verdict only holds when the result sits inside that pair, so the limits have to travel with the value rather than collapse into one column. Batch and lot numbers link the certificate back to the goods received and the purchase order. Multi-lot and multi-component certificates stack several result blocks, and a single out-of-specification line changes the whole batch disposition to reject. An accreditation reference such as an ISO/IEC 17025 scope number, a quality system certified to ISO 9001, and the test method cited for each parameter tell a reviewer how much weight a number carries. Talonic reads the certificate and returns the batch identity, the supplier and testing laboratory, and the full test grid with each parameter, result, specification limits, unit, and pass or fail status, plus the overall disposition. That is how a lot of Acetone Technical Grade received 2026-05-08 and tested 2026-05-10 under batch AC-24071 releases into the ERP with its SKU, its assay of 99.7%, and its conformity statement, so a QA reviewer signs off from structured data instead of a retyped page.

What gets extracted from certificates of analysis

Certificate NumberCoA-2026-24071
Issue Date2026-05-12
ProductAcetone Technical Grade
Batch / Lot NumberAC-24071
SupplierSigma-Aldrich
Testing LaboratoryEurofins Scientific
ParameterAssay (purity)
Result99.7%
Specification Limits99.0 to 101.0%Min and max travel with the result
Overall ResultPass

How extraction works for certificates of analysis

Certificates of analysis reach a quality team as supplier PDFs, scanned paper releases, and portal exports from laboratories such as Eurofins Scientific, SGS, and Bureau Veritas, and every laboratory arranges the result grid its own way; a scanned release is read with OCR before anything else. Talonic classifies the certificate and maps it to the inspection schema in the Field Registry, which keeps the batch header separate from the per-parameter test grid. Per tested parameter, the result, the specification minimum and maximum, the unit, and the pass or fail status stay together, so a value is never divorced from the limits that judge it, and the overall disposition is reconciled against the individual lines. Batch and lot numbers, the testing laboratory, and any ISO/IEC 17025 accreditation reference are captured so the certificate links back to the goods receipt and the purchase order. Defects and nonconformities noted on the sheet are kept with their classification. Every value returns with a confidence score and pixel-region provenance under DIN SPEC 91491 conformity, so a QA reviewer can verify an out-of-specification line against the source certificate before rejecting or releasing a batch.

Sample extraction

A single-lot certificate of analysis for a technical-grade solvent

{
  "certificate_number": "CoA-2026-24071",
  "issue_date": "2026-05-12",
  "inspection_date": "2026-05-10",
  "product": {
    "name": "Acetone Technical Grade",
    "batch_number": "AC-24071",
    "sku": "SLV-ACE-25L"
  },
  "supplier": {
    "name": "Sigma-Aldrich"
  },
  "testing_laboratory": {
    "name": "Eurofins Scientific",
    "accreditation_number": "ISO/IEC 17025:2017"
  },
  "specification": "Assay by gas chromatography",
  "test_results": [
    {
      "parameter": "Assay (purity)",
      "result_value": "99.7",
      "specification_min": "99.0",
      "specification_max": "101.0",
      "unit": "%",
      "status": "pass"
    },
    {
      "parameter": "Water content",
      "result_value": "0.2",
      "specification_min": "0",
      "specification_max": "0.5",
      "unit": "%",
      "status": "pass"
    }
  ],
  "overall_result": "pass",
  "inspector": "M. Alvarez",
  "approval_date": "2026-05-12"
}

Frequently asked

Does it keep each result bound to its specification limits?

Yes. Each parameter is returned with its result, its specification minimum and maximum, and its unit together, so a value such as an assay of 99.7% is judged against its 99.0 to 101.0% window rather than reported as a bare number.

How is the overall pass or fail decided?

The per-parameter statuses are captured as read, and the overall disposition is reconciled against them, so a single out-of-specification line that should flip the batch to reject is surfaced instead of buried under a stated pass.

Can it read multi-parameter and multi-lot certificates?

Yes. A certificate that stacks several result blocks or covers more than one lot keeps every parameter row and every batch number, so a quality team loads the full test grid rather than the summary line.

Author note

Reviewed by Talonic engineering, schema review · last reviewed 2026-07-06