Docyield's certificate of analysis parser reads a CoA — scanned, photographed, or supplied as a PDF — and returns its test results as structured data. A certificate of analysis is the document a manufacturer issues to vouch that a specific batch of product was tested and meets its specification, and it is central to quality assurance in pharmaceuticals, chemicals, food, and cosmetics. The parser captures the product, batch and lot numbers, the manufacturer and dates, every analytical test with its specification and result, and the overall disposition, exporting them as CSV, Excel, or JSON.
CoAs differ from one lab and one product to the next: a finished-drug certificate, a raw-material assay, and a food-grade test report each list different parameters and lay them out differently. The same idea — a measured value checked against an acceptance limit — appears under headings like "result vs. specification," "found," or "assay," and the pass/fail call may be a word, a tick, or implied by the numbers. Rather than depend on a template, Docyield reads each certificate by meaning, rebuilding the results table so every parameter, specification, and result lands in the right place.
What a certificate of analysis records
A certificate of analysis ties a batch of product to the testing that released it. The header identifies the product and the manufacturer and pins down the specific batch and lot numbers, along with the date of manufacture and the expiry or retest date that bounds the batch's usable life. Those identifiers are what let a CoA be matched back to the exact material it certifies.
The body is the results table — the substance of the document. Each row states a tested parameter, the specification or acceptance criteria it must meet, the measured result, the unit of measure, and whether the result passed. A concluding statement then gives the overall disposition: whether the batch as a whole conforms and is released. The parser captures both the per-test detail and that overall conclusion. The batch and lot numbers are kept as separate fields because some products carry both — a lot that subdivides a batch, for instance — and either may be the value a downstream system uses to trace the material.
Why structured extraction beats raw OCR and manual entry
In a regulated manufacturing environment, CoA data has to be transcribed into batch records, QA systems, and supplier-qualification files, and doing that by hand is both slow and risky. A result typed against the wrong parameter, or a unit dropped, undermines the very traceability the certificate exists to provide.
Plain OCR reads the results table as loose cells, leaving you to work out which number is a specification limit and which is the measured result, and which row they belong to. Structured extraction rebuilds the table: each test comes back with its parameter, specification, result, unit, and pass flag aligned, so the data can flow into a QA system as clean records rather than a grid to be re-sorted by hand.
Who uses a certificate of analysis parser
- QA and QC teams logging incoming-material and finished-product CoAs into batch records.
- Manufacturers in pharma, chemicals, food, and cosmetics digitising supplier certificates.
- Procurement and supplier-quality teams checking received batches against specification.
- Contract manufacturers and labs passing structured results to their clients.
- Compliance and audit teams building searchable archives of release documentation.
- Developers feeding CoA results into a LIMS or quality system through the API.
Test results, specifications, and the pass flag
The tests are returned as a nested list, and it is worth describing how each one comes back. Every test is a self-contained record: the parameter that was measured, the specification or acceptance criteria, the measured result, the unit of measure, and a pass flag indicating whether the result meets the specification. Exported to CSV or Excel, each test becomes a row, so you can sort by parameter, filter to any failing line, and compare results across batches.
The pass flag is captured as a true/false value where the certificate states or clearly implies conformance, and is left empty when a CoA gives a result without a pass/fail call. Pairing the result with both its specification and its unit keeps each measurement interpretable on its own — a number without its limit or its unit is not meaningful for release decisions. The parameter name is preserved exactly as the certificate writes it, because a test named "assay" on one CoA and "content" on another may describe the same measurement, and normalising them would erase a distinction a reviewer may need.
Accuracy, limitations, and review
No parser reads every certificate perfectly, and CoAs pack dense numeric tables with sub- and superscripts, symbols, and tight column spacing. Accuracy is highest on clean, flat scans and native PDFs; a low-resolution photo of a crowded results table is where a digit, a unit, or a decimal point can be misread, and a sharper image consistently helps.
Where a cell is genuinely absent — a result with no stated specification, for instance — the field comes back empty rather than filled with a guess, because a fabricated specification or result on a quality document is worse than a gap. The parser keeps the source certificate beside the extracted table so the figures are quick to verify. This describes data extraction only; it is not a quality, regulatory, or release decision, and the values should be reviewed before any batch is dispositioned.
Output formats, API, and batch
Each parse exports as CSV, Excel, JSON, or XML from the same result. CSV and Excel suit a QA worksheet where each test is a row; JSON suits a LIMS or quality-system integration; XML fits an older laboratory or ERP import. The free tool handles one certificate at a time.
When CoAs arrive with every batch or every supplier delivery, the Docyield API and batch dashboard run the same extraction at scale, return results by webhook, and let you apply your own checks — for example flagging any test where the pass flag is false. The field names are identical between the free tool and the API.
What the certificate of analysis parser extracts
Each certificate is returned against a fixed schema. Cells the document leaves blank come back empty rather than guessed. The tests are a nested list, one record per analytical result.
- Product name
- The name of the tested product.
- Batch number
- The batch number the certificate certifies.
- Lot number
- The lot number.
- Manufacturer
- The manufacturer that issued the certificate.
- Manufacture date
- The date of manufacture.
- Expiry date
- The expiry or retest date.
- Tests
- A nested list of analytical results. Each test holds the parameter measured, the specification or acceptance criteria, the measured result, the unit of measure, and a pass flag for whether it meets specification.
- Conclusion
- The overall conclusion or disposition for the batch.
How to convert a certificate of analysis to CSV, Excel, or JSON
- 1Upload your CoA — drop a flat scan, photo, or PDF of the certificate onto the box above, or choose a file.
- 2Wait a few seconds while Docyield reads the document and rebuilds the results table.
- 3Review the structured result, checking each result, specification, and unit against the original.
- 4Pick your output tab — CSV or Excel for a QA worksheet, or JSON and XML for integrations.
- 5Copy the result or download the file, ready for your batch records or quality system.
Frequently asked questions
Processing documents at scale?
Batch upload, an extraction API, and webhooks for 100+ documents a month.
