Your batches are marked. Read the marks.

Separator sheets, cover sheets and stamped codes already mark where each document ends. LM-Kit reads them and splits the batch, with no model loaded.

No model loaded Milliseconds per page Same batch, same split PDF, TIFF and images

Five ways a barcode ends a document.

Tell the splitter what a code means. The value it carries labels each document, names its file and can regroup pages that arrived out of order.

FirstPageOfDocument

Cover sheets

A code on a document's first page, a cover sheet or a stamp, opens the document and stays in it.

LastPageOfDocument

Closing slips

A code on the last page closes the document; the next page starts a new one.

ValueChange

Changing numbers

Every page stamped with its file number. A new document starts the moment the number changes.

GroupByValue

Mixed stacks

All pages sharing a value form one document, even when they arrived scattered through the batch.

Reads QR Code, Micro QR, rMQR, Data Matrix, PDF417, Aztec, MaxiCode, Code 128, 39 and 93, Codabar, ITF, EAN/UPC, DataBar and Telepen, in PDFs, multi-page TIFFs and images.

Built for real batches, not clean demos.

A mailroom batch carries more than separators: blank backs, invoice EANs, parcel labels, the odd unreadable page. Each one is handled, and reported.

  • Duplex scans. The blank back of each separator sheet is dropped, or every blank page of the batch.
  • Only the codes that count. Formats, exact values, a pattern and a search area on the page keep invoice EANs and parcel labels out. Rejected codes are still reported, so a rule is tuned on a real batch.
  • A failed page never splits a batch. A page that cannot be read stays content and is listed, never mistaken for a separator.
  • Every page accounted for. Each page comes back with its role: content, separator, kept separator, discarded blank or discarded leading page.
  • Documents as they were scanned. PDF pages are copied with their text, fonts and vectors intact, never rasterized, or written as TIFF.

Split a batch. In code, on a server or from an agent.

LM-Kit.NET splits inside your .NET application. LM-Kit One serves the same splitter over REST and to agents through MCP.

LM-Kit.NET

The SDK, inside your .NET application

LM-Kit One

The server, for any language and agent

LM-Kit.NET · SplitBatch.cs
using LMKit.Extraction.Barcodes;

var splitter = new BarcodeSplitting(new BarcodeSplittingOptions
{
    Mode = BarcodeSplitMode.SeparatorPage,
    Match = new BarcodeMatchRule
    {
        Formats = new[] { BarcodeFormat.QRCode },
        Pattern = "^CASE-"             // other codes never count
    },
    RemoveBlankPageAfterSeparator = true,  // duplex: drop blank backs
    FileNameTemplate = "{value}"              // CASE-1042.pdf...
});

BarcodeSplittingResult result = splitter.SplitToFiles("batch.pdf", "cases");

foreach (BarcodeSegment document in result.Segments)
{
    Console.WriteLine($"{document.Label}: pages {document.StartPage}-{document.EndPage}");
}

Split first. Then read, sort and extract.

Barcode splitting hands single, clean documents to the rest of the pipeline, each one carrying the value its code gave it.

01

Split by barcode

One batch becomes documents, in milliseconds per page.

02

Read

Scans become text with on-device OCR.

03

Sort

Each document is routed by its type with classification.

04

Extract

Typed fields come out through structured extraction.

No barcodes on the batch? Intelligent document splitting finds the boundaries from the content.

Barcode splitting

Split every batch the same way, every time.