Not all documents follow the same rules. Some, like spreadsheets and database exports, are fully structured. Others, like a paragraph of free text, have no structure at all. Most business documents fall somewhere in between: invoices, resumes, and claims forms all have identifiable fields, but the position, labeling, and formatting of those fields shift from one document to the next. This is what makes a document semi-structured.
Understanding how semi-structured documents differ from structured and unstructured data, and how to parse them effectively, is essential for any team looking to streamline document-heavy workflows.
What Is a Semi-Structured Document?
A semi-structured document is a document that contains identifiable fields, labels, or sections, but doesn’t follow a fixed, predefined layout. The information is organized, but how it’s formatted varies depending on the source, vendor, or template used to create it.
One common example is invoice. Every invoice includes a vendor name, an invoice number, a date, and a total amount. But one vendor might place the total at the bottom right of the page, while another places it in a table at the top. Field labels vary too: “Total Due,” “Amount Payable,” and “Balance” often refer to the same value. The structure is real, it’s just not consistent from one document to the next.
Structured vs. Semi-Structured vs. Unstructured Data
What actually separates these three types of data? The difference comes down to how predictable the format is, and how much work a system needs to do before it can use the data. Structured data follows a fixed schema, so a computer always knows exactly where to look. Unstructured data has no schema at all, so extracting anything from it requires interpretation rather than lookup. Semi-structured data sits in between: it has organization, but that organization isn’t guaranteed to be consistent.
Here’s how the three compare:
| Aspect | Structured | Semi-Structured | Unstructured |
| Schema | Fixed, predefined | Present, but flexible | None |
| Examples | Database tables, spreadsheets, CSV files | Invoices, resumes, emails, JSON, XML | Free text, images, audio, video |
| Consistency | Every record has the same fields, in the same order | Fields are present but vary in position, label, or format | No predictable fields at all |
| How it’s processed | Queried directly with SQL or similar tools | Requires parsing logic to locate and normalize fields | Requires NLP, OCR, or ML models to interpret content |
| Extraction difficulty | Low, schema is known in advance | Medium to high, varies by document and source | Highest, no structural cues to guide extraction |
Real Examples of Semi-Structured Documents
Semi-structured documents show up across nearly every business function. What they have in common is a predictable set of fields, wrapped in a layout that changes depending on who created the document. Here are a few of the most common examples.
Invoices
Every invoice includes a vendor name, invoice number, date, and total amount. But the layout, field labels, and even the currency format differ from vendor to vendor.
Resumes
A resume almost always includes contact information, work history, and education. But the order of sections varies by candidate, making it difficult to extract consistently without a flexible parsing tool.
Purchase orders
A purchase order typically includes a PO number, buyer and supplier details, and itemized costs. Like invoices, the structure is consistent in concept but inconsistent in presentation across different procurement systems.
Receipts
Receipts share the same core fields, merchant name, date, amount, and items purchased, but the format varies widely depending on the point-of-sale system that generated them.
Payslips
A payslip typically includes employee details, pay period, gross pay, deductions, and net pay. But each employer uses different templates, labels, and layouts, especially across countries or payroll providers.
Why Parsing Semi-Structured Documents Is Hard
As discussed earlier, semi-structured documents appear in unpredictable layouts and structures. These characteristics are the primary reason why parsing this type of document is challenging:
- Inconsistent layouts: A parser built around one layout often fails when a new one shows up.
- Variable field labels: The same value is often described differently that can cause a system to miss or misread the field.
- Mixed content types: Many documents combine labeled fields, tables, free text, and images, each requiring a different extraction method.
- Scale and volume: The more documents you process, the more variations you’ll run into, and what works in a small test often fails at scale.
Best Practices to Extract Semi-Structured Documents
Reliable extraction from semi-structured documents depends on choosing an approach that can accommodate variation, not just the layouts already seen. Here’s what that looks like in practice.
Avoid relying on fixed templates alone
Template-based extraction works for a single, unchanging layout, but breaks down as soon as a new vendor, format, or version appears.
Extract by field type and context, not position
Rather than pulling data from fixed coordinates on a page, identify fields based on what they represent. This schema-based approach works better across varying layouts.
Normalize labels and formats after extraction
Map different labels for the same field, such as “Total Due,” “Balance,” or “Amount Payable,” into a single standard output, and normalize formats like dates and currency so downstream systems receive consistent data.
Validate extracted data before use
Route low-confidence results through a human-in-the-loop review and approval step before the data reaches an ERP, database, or reporting system.
Use AI-powered OCR with layout understanding
Legacy parsers struggle with tables, mixed content, and handwritten sections. Fintelite provides the intelligent OCR solution modern teams need to accurately extract the same data fields regardless of document layout, without relying on manual setup.
Frequently Asked Questions
Semi-structured documents contain both structured and unstructured information. They follow a general layout but lack a fixed schema, allowing the format and placement of information to vary between documents.
Semi-structured documents often have inconsistent layouts, multiple templates, and mixed content, making it difficult to reliably identify and extract information.
The decision comes down to a few factors: how central document parsing is to the product, available engineering capacity, document variety, and time to production. In most cases, buying is the more practical choice, since ready-made solutions already handle layout variation, validation, and integration with far less ongoing maintenance than an in-house build.