Expert guide

Scan Documents into Microsoft Access with AI

From a pile of paperwork to validated database records, without retyping

Short answer: scan or save documents into an intake folder, send each file to an AI document model with a fixed field list, write the results into an Access staging table with the file path, run validation queries (does the customer exist, are totals consistent, is it a duplicate), and review exceptions on a simple form before appending to live tables. Keep files outside the database. We build these pipelines as AI workflow automation projects.

Many businesses that run on Access still have a person whose job includes typing paper into it: delivery notes from drivers, signed timesheets, inspection sheets from the field, application forms. It is slow, it is error-prone, and the paper is usually the only copy of the evidence. AI extraction removes most of the typing while keeping the scan linked to the record.

The Pipeline at a Glance

  • 1. Intake folder

    Scanners, a shared mailbox rule or a phone app drop files into \Docs\Inbox.

  • 2. Extract

    A process sends each file to the AI model and receives JSON with the defined fields.

  • 3. Stage

    Results go into tblDocStaging with the file path and status New.

  • 4. Validate

    Queries mark each row Ready or Review with a reason.

  • 5. Review

    A form shows the scan next to the extracted fields for correction.

  • 6. Post

    An append query moves Ready rows to live tables; files move to \Docs\Processed\yyyy\mm.

Step 1: Define the Fields per Document Type

Start with one document type. For a delivery note:

{
  "doc_type": "delivery_note",
  "delivery_number": "string",
  "delivery_date": "YYYY-MM-DD",
  "customer_name": "string",
  "customer_account": "string or null",
  "po_number": "string or null",
  "lines": [{ "sku": "string", "description": "string", "qty": number }],
  "signed": true/false,
  "received_by": "string or null",
  "notes": "anything handwritten or unclear"
}

Ask for "signed": true/false explicitly. Proof of delivery disputes are often the reason the paperwork matters at all.

Step 2: The Staging Table

FieldTypePurpose
StageIDAutoNumberPrimary key
FilePathShort Text (255)Link to the scan; never store the file itself
DocTypeShort TextWhich schema was used
RawJSONLong TextExactly what the AI returned, for audit
DeliveryNumber, DeliveryDate, CustomerName ...Typed fieldsParsed from the JSON
StatusShort TextNew, Ready, Review, Posted, Rejected
ReasonShort TextWhy it needs review
ReviewedBy, ReviewedOnText, Date/TimeAccountability

Lines go in a child table, tblDocStagingLines, linked by StageID. Keeping RawJSON lets you re-parse later if you change field mappings, without paying to extract the document again.

Step 3: Validation Queries

-- Unknown customer
UPDATE tblDocStaging AS s
SET s.Status = "Review", s.Reason = "Customer not found"
WHERE s.Status = "New"
  AND DCount("*", "tblCustomers",
             "AccountNo='" & Nz(s.CustomerAccount, "") & "'") = 0;

-- Duplicate delivery number already posted
UPDATE tblDocStaging AS s
SET s.Status = "Review", s.Reason = "Duplicate delivery number"
WHERE s.Status = "New"
  AND DCount("*", "tblDeliveries",
             "DeliveryNo='" & s.DeliveryNumber & "'") > 0;

-- Unsigned delivery note
UPDATE tblDocStaging SET Status = "Review", Reason = "Not signed"
WHERE Status = "New" AND Signed = False;

-- Everything else passes
UPDATE tblDocStaging SET Status = "Ready" WHERE Status = "New";

Run these in order from one macro or VBA procedure. Each document gets exactly one reason, the first rule it fails, so the review queue is easy to work through.

Step 4: The Review Form

  • A continuous form listing Review rows with their Reason.

  • A detail form with the extracted fields on the left and a WebBrowser control or Edge browser control showing the PDF on the right.

  • Buttons: Approve (sets Ready), Reject (sets Rejected with a note), and Open file.

  • ReviewedBy and ReviewedOn filled automatically.

Showing the scan next to the fields is what makes review fast. Without it, reviewers open files one by one in another window and the time saved by AI disappears.

Step 5: Running the Extraction

ApproachGood forNotes
VBA in Access calling an AI APILow volume, one siteSimple; key management needed; see our OpenAI from Access guide
Scheduled script or serviceSteady daily volumeRuns unattended; writes to the back end or SQL Server
Power Automate with AI BuilderMicrosoft 365 shops with SharePoint intakeLicensing cost; writes to SharePoint or Dataverse more easily than Access
Specialised OCR serviceVery high volumes, standard documentsPer-page pricing; still needs your validation

The VBA building block is in connecting MS Access to the OpenAI API; for vision models you send the image or PDF content as well as the instruction. The same validation thinking applied to invoices in Excel is in extracting PDF invoice data with AI.

Scanning Tips That Raise Accuracy

  • Scan at 300 dpi in greyscale; colour rarely helps and makes files larger.

  • One document per file; split batches with the scanner's blank-page or barcode separator.

  • Redesign your own forms with labelled boxes and printed reference numbers.

  • Ask field staff to photograph forms flat, in good light, filling the frame.

  • Add a QR code with the job number to forms you print; it removes the hardest field.

Where This Pays Off

IndustryDocumentTypical outcome
Distribution and logisticsProof of delivery slipsDisputes resolved with a linked signed scan
Field service and HVACJob sheets, inspection checklistsSame-day job closure and invoicing
Labs and quality controlResult sheets, certificates of analysisSearchable results linked to samples
Staffing agenciesSigned timesheetsFaster payroll and client billing
Nonprofits and schoolsApplication and consent formsClean records without retyping

Related guides: lab sample tracking in Access and staffing agency timesheet tracking. If you are starting from scratch, a custom Access database can be designed around the documents from day one.

FAQ

Scanning documents into Access FAQ

AI extraction, file storage and accuracy

Yes. AI vision models and document-extraction services read scanned or photographed forms, invoices, delivery notes and certificates, and return named fields. A small import routine writes those fields into a staging table in Access, where validation queries check them before they are added to the main tables.

No. Storing PDFs or images in attachment or OLE fields bloats the file quickly towards the 2 GB limit and slows everything down. Store files in a folder or document library and keep only the file path, file name and extracted data in Access.

A staging table holds extracted data exactly as the AI returned it, with a status and confidence notes, before it touches your real tables. It lets people review and correct records, run checks such as 'does this customer exist?', and keeps bad extractions out of reports.

Typed forms scanned at 300 dpi are read very reliably. Handwriting, low-resolution phone photos, stamps over text, and multi-page documents reduce accuracy. Validation rules and a review queue for low-confidence documents are what make the process dependable.

High-volume, repetitive documents: delivery notes and proof-of-delivery slips, supplier invoices, timesheets, inspection checklists, intake and application forms, lab result sheets, insurance and compliance certificates. One-off or highly variable documents rarely justify the setup.