Insurance Compliance

Extract Certificate of Insurance Data into Excel — ACORD Forms and COI Fields from Any Insurer Format

Manually retyping COI fields from ACORD 25 forms takes 3–5 minutes per certificate — and when a single certificate contains four separate coverage rows (GL, Auto, Umbrella, WC) with their own policy numbers, limits, and dates, one misaligned column means the wrong expiration date on your compliance tracker. This extracts every coverage row into named Excel columns in 5–10 seconds per page.

Encrypted processing · Automatic data deletion after conversion

PDF & Scanned COIs
XLSX/CSV
All Carrier Formats

What You Can Extract from Certificates of Insurance

Type the column names you need — the AI finds these values on every COI by understanding what each field means, whether it sits on a standard ACORD 25 layout or a carrier's proprietary certificate format. One set of column names works across documents from different insurers.

Named Insured
Certificate Number
Certificate Holder
Producer / Agency
Carrier Name(s)
Policy Number
Coverage Type
Coverage Limits
Policy Effective Date
Policy Expiration Date
Additional Insured
Description of Ops

The tool uses Custom Column Extraction: you decide the column names in your output spreadsheet — "Named Insured," "GL Each Occurrence Limit," "Expiration Date" — and the AI locates the matching value on each COI by understanding what the field label means and where it sits in the document's visual hierarchy. This means one set of column names works across ACORD 25 forms from different carriers, COIs from non-standard proprietary formats, and even older scanned certificates with shifted layouts — no template or coordinate mapping needed for each insurer.

Why COIs Break Template-Based Extraction — and What's Different Here

The ACORD 25 form is the insurance industry's universal translator — the standard format everyone in insurance uses to communicate coverage. But a "standard form" is not the same thing as a "standard document." Every agency management system renders it slightly differently, and a single certificate actually represents 3–4 independent coverage policies in a dense grid whose structure flat OCR doesn't understand.

01

One certificate contains 3–4 separate insurance policies stacked in a dense grid — but flat OCR reads left-to-right across rows, not down a column per policy. The coverage section of an ACORD 25 has rows for General Liability, Auto Liability, Umbrella/Excess, and Workers' Comp — and columns for Insurer, Policy Number, Effective Date, Expiration Date, and Limits. Template-based OCR that reads by coordinate can misalign the Auto row's expiration date with the GL row's limits, silently producing incorrect data. On Reddit, project managers describe spending their entire day manually verifying COI data because "a single missed date on this spreadsheet could cost the company millions."

02

The Additional Insured field is a checkbox — and checkboxes are invisible to coordinate-based OCR. On the ACORD 25, the Additional Insured status appears as a checked or unchecked box next to the Description of Operations section. OCR tools trained to read text fields and dollar amounts routinely skip checkbox states entirely — meaning the single most important compliance question ("is this subcontractor's policy endorsed to cover us?") goes unanswered. As compliance experts note, the COI checkbox alone does not count — you must verify the actual endorsement exists, but without checkbox extraction, you can't even begin that verification.

03

The insurer letter codes (A, B, C, D) create a relational mapping that flat extraction loses. On ACORD 25, the coverage table uses letter designations in the "Insr Ltr" column to tie each coverage row to a specific insurer listed in the header. The producer name and carrier name appear in separate blocks. Flat extraction that reads each cell independently doesn't preserve the A → Carrier relationship, making it impossible to know which carrier underwrites which coverage row without manual rework.

01

Define columns once — the AI reads each coverage row independently and outputs one row per policy in the final spreadsheet. If you define columns "Coverage Type," "Policy Number," "Each Occurrence Limit," and "Expiration Date," the AI identifies each coverage row in the table as a separate data record. The GL row and the Auto row each become their own row in the output, with the Named Insured and Certificate Holder values repeated across rows so the output preserves the full relational context — filterable by coverage type, sortable by expiration date.

02

The AI recognizes checkbox states, insurer letter codes, and dense grid layouts by reading the document's visual structure — not pixel coordinates. It understands that a check in the "Additional Insured" box means yes, that the "A" in the Insr Ltr column maps to the carrier in the "Insurer A" header block, and that the coverage row labeled "General Liability" has its own policy number, dates, and limits distinct from the "Auto Liability" row below it. This semantic reading works regardless of where a carrier's rendering system positions each element on the page.

03

One column definition works across COIs from any insurer — ACORD-standard or proprietary format. Whether the certificate is a system-generated ACORD 25 from Travelers, a proprietary format from a regional carrier, or a scanned PDF emailed by a small subcontractor, the same column names extract the same data types. No per-carrier template setup. No manual coordinate mapping. Type your columns once and the AI finds the values everywhere.

How a Batch of Subcontractor COIs Gets Processed

Upload — what arrives from subcontractors, as-is

You receive COIs from 20 subcontractors — some as system-generated ACORD 25 PDFs from Applied Epic, some as carrier proprietary certificate formats, some as scanned copies at varying resolutions. One sub sends a COI with an Additional Insured endorsement page attached. Upload all of them together as a single batch. No pre-sorting by format, carrier, or document type is required.

Define columns — what you need for your compliance tracker

Type the column names for your output spreadsheet: Named Insured, Certificate Holder, Carrier, Coverage Type, Policy Number, Each Occurrence Limit, Effective Date, Expiration Date, Additional Insured. You can also define a Computed Column — for instance, name a column Days Until Expiration with a description telling the AI to subtract today's date from the expiration date, so your output includes an immediate compliance status indicator without needing a separate formula step in Excel.

Output — one spreadsheet with every coverage row from every subcontractor

Download an Excel file where each row represents one coverage type from one COI. A subcontractor with GL + Auto + WC coverage produces three rows — each with the same Named Insured and Certificate Holder values, but different policy numbers, limits, and dates from each coverage section. The output is ready for pivot tables: filter by coverage type to see all subcontractors' GL limits at a glance, sort by expiration date to flag policies due for renewal, or group by carrier to audit coverage concentration across your vendor portfolio. Additional Insured status appears as a Yes/No column — green for verified, blank for unchecked. Export as XLSX, CSV, or JSON.

When It Works Best — and When to Review Results

Extraction accuracy is high for standard ACORD 25 and carrier-format COIs. A few document conditions and COI-specific complexities are worth understanding before processing a large batch.

Handles reliably

System-generated ACORD 25 certificates. COIs produced by Applied Epic, Vertafore, AMS360, and other agency management systems extract with high accuracy. The AI reads the standardized section headers (General Liability, Automobile Liability, Umbrella/Excess, Workers' Comp) and maps each row's policy number, dates, and limits into the correct output columns.

Carrier proprietary certificate formats. Many large insurers (Travelers, Liberty Mutual, Chubb) issue certificates in their own format rather than ACORD 25. The AI extracts the same field types — Named Insured, Carrier, Coverage Limits, Dates — by understanding the field labels semantically, not by matching an ACORD layout template.

Batch subcontractor COI processing. Upload COIs from multiple subcontractors — each potentially from a different insurer in a different format — and process them all with one column definition. Each certificate is processed independently and the output Excel consolidates all subcontractors in one sheet.

Scanned paper COIs at 200+ dpi. Clear scans of printed certificates — including older ACORD versions (2010/05 and 2016/03) — extract reliably. Checkbox states for Additional Insured are captured when the scanned image is sharp enough to distinguish marked from unmarked boxes.

Verify these cases

Additional Insured endorsement pages are separate documents from the main COI. While the AI extracts the Additional Insured checkbox from the ACORD 25 form itself, the actual endorsement language — specifying which entity is named and what coverage is extended — lives on a separate attached page. If you upload the endorsement page alongside the COI, you can define Additional Insured Name columns and the AI extracts from the endorsement. The current version does not automatically link endorsement pages to their parent COI by certificate number. Verify that each endorsement row in the output corresponds to the correct certificate.

Hand-filled COIs with small or cursive handwriting. When an agent hand-writes policy numbers, dates, or limits into the ACORD 25 fields — especially in the cramped grid cells of the coverage table — the AI's handwriting accuracy drops below its printed-text baseline. Add a Confidence column to flag low-confidence rows for manual review, especially for fields like policy numbers and dollar amounts where a single misread digit matters.

Description of Operations that spans across continuation forms. When the Description of Operations section on the ACORD 25 is cut short with "see attached" or a reference to an ACORD 101 continuation form, the AI extracts only the text present on the ACORD 25 itself. The continuation form's text is captured only if it is included in the upload alongside the main certificate.

COIs from insurers that use heavily graphical or image-based formats. Some regional carriers issue certificates as flat image renders within a PDF rather than text-layer documents. The AI still processes these through visual recognition, but accuracy depends on image resolution and contrast. If your output shows unexpected blanks or garbled values in the Named Insured or Carrier columns, check whether the source PDF contains a selectable text layer or is purely graphical — purely graphical documents benefit from uploading at higher resolutions.

Frequently Asked Questions

Can it handle ACORD 25 forms from any insurance carrier — or only ones that use the exact standard layout?

It handles ACORD 25 forms regardless of which carrier or agency management system produced them. The AI reads field labels and section headers semantically rather than relying on pixel coordinates, so position differences between carriers — one insurer might render "Certificate Number" 10 pixels higher than another — don't affect extraction. Carrier proprietary formats that don't follow the ACORD layout at all are also supported: define columns like "Named Insured," "Policy Number," or "GL Each Occurrence Limit" and the AI locates the corresponding values anywhere on the page by understanding the surrounding label text and visual context.

How does it handle the multi-row coverage table with separate rows for General Liability, Auto, Umbrella, and Workers' Comp?

Each coverage row in the ACORD 25's coverage table becomes its own row in the output Excel. If you define columns like "Coverage Type," "Policy Number," "Each Occurrence Limit," and "Expiration Date," the AI identifies each coverage section row individually — extracting the GL row's policy number, limits, and dates into one output row, the Auto row's into the next, the Umbrella row's into the next, and the Workers' Comp row's into the next. The output preserves the 1:N relationship between the certificate header (Named Insured, Certificate Holder, Producer) and the coverage-level details — Named Insured and Certificate Holder values are repeated across all related rows so you can filter, sort, and pivot by any combination of subcontractor and coverage type. This is fundamentally different from flat OCR, which would read the table grid left-to-right and risk misaligning a date from the Auto row with a policy number from the GL row.

How accurate is Additional Insured checkbox detection — especially on scanned COIs?

For clean digital PDFs — the majority of COIs generated by agency management systems — checkbox detection is reliable: marked boxes (X or check) are consistently identified as Yes, and unmarked boxes as No. On scanned paper COIs, accuracy depends on scan quality. A sharp scan at 200 dpi or above produces reliable checkbox detection. Lower-resolution scans or faxed copies where the checkbox grid lines become muddy reduce accuracy. The distinction matters because the Additional Insured checkbox is a critical compliance indicator — it tells you whether the subcontractor's policy has been endorsed to name you as an additional insured, which affects your legal standing in the event of a claim. We recommend spot-checking the Additional Insured column on the first few scanned COIs in a batch, then proceeding with confidence once the output pattern matches what you see on the source documents.

Can I integrate this with a Collection Link so subcontractors upload their own COIs directly?

Yes. ImageToTable.ai includes a Collection Link feature — a shareable URL you can send to each subcontractor. They open the link, enter a short verification code, and upload their COI directly into your processing queue — no registration or login required on their end. Files land in your account ready for extraction with the column names you've already defined. This eliminates the email ping-pong of requesting, chasing, and forwarding COIs, and ensures every certificate arrives in a format-consistent processing pipeline rather than scattered across email threads. After processing, the extracted data populates your Excel output alongside any COIs you uploaded directly.

What about the Named Insured field — can it distinguish the insured from the certificate holder when names look similar?

Yes. On the ACORD 25, the Named Insured appears in a distinct block — typically the top-left insured section — while the Certificate Holder appears in a separate block further down the page. The AI reads the visual hierarchy: it understands that the entity listed under "INSURED" or "PRODUCER" (on the left side of a standard ACORD 25) is the policyholder, and the entity listed under "CERTIFICATE HOLDER" is the party requesting proof of coverage. This semantic reading correctly assigns each party to the correct output column, even when both names are company names that look structurally similar (e.g., "ABC Construction LLC" as Named Insured vs "ABC Development Corp" as Certificate Holder). This is another case where coordinate-based OCR fails — if the two name blocks shift position between different carriers' ACORD renderings, a template that expects names at fixed coordinates will swap the two parties without warning.

📮 contact email: [email protected]