SeparatorPage · default
Separator sheets
A sheet between two documents, printed once and reused. Removed by default, or kept as the first or last page of its document.
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.
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.
SeparatorPage · default
A sheet between two documents, printed once and reused. Removed by default, or kept as the first or last page of its document.
FirstPageOfDocument
A code on a document's first page, a cover sheet or a stamp, opens the document and stays in it.
LastPageOfDocument
A code on the last page closes the document; the next page starts a new one.
ValueChange
Every page stamped with its file number. A new document starts the moment the number changes.
GroupByValue
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.
A mailroom batch carries more than separators: blank backs, invoice EANs, parcel labels, the odd unreadable page. Each one is handled, and reported.
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
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}"); }
# A registered batch, split on its separator sheets into PDFs named by their code curl -s "$LMKIT_URL/lmkit/v1/barcode-splitting" \ -H "Authorization: Bearer $LMKIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "input": "'"$FILE_ID"'", "input_format": "FileIdentifier", "mode": "SeparatorPage", "remove_blank_page_after_separator": true, "split_documents": true, "file_name_template": "{value}" }'
{
"method": "tools/call",
"params": {
"name": "document_split_by_barcodes",
"arguments": {
"file_id": "FILE_ID",
"mode": "separator_page",
"formats": ["QRCode"],
"pattern": "^CASE-",
"duplex": true
}
}
}
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.
No barcodes on the batch? Intelligent document splitting finds the boundaries from the content.
Working console demos on GitHub, step-by-step how-to guides on the docs site, and the API reference for the classes used on this page.
Console demo: split a scanned batch on separator sheets, cover codes or document numbers.
Open on GitHub → How-to guideModes, match rules, document values, duplex batches and outputs in LM-Kit.NET.
Read the guide → How-to guideThe two REST endpoints and the MCP tools, request by request.
Read the guide → API referenceAPI reference for the barcode splitter.
Open the reference →Barcode splitting