Token Classification
Transformers
ONNX
Safetensors
modernbert
ner
on-device
privacy
flowx
openner
logistics
de-identification
Instructions to use flowxai/bolparse with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use flowxai/bolparse with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="flowxai/bolparse")# Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("flowxai/bolparse") model = AutoModelForTokenClassification.from_pretrained("flowxai/bolparse", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Remove a false checksum guarantee, say what the 1.0000 F1 is, state the training domain
Browse filesThe card claimed identifiers are validated by checksum, as 'a correctness guarantee general LLMs lack'. No repository in the OpenNER family ships validation code, and a ModernBERT encoder cannot run a check digit, so the claim was false for every model in the family.
The held-out F1 is now explained rather than headlined: train and test come from one generator, and two models from the same pipeline (filingtag 0.6444, ibandetect 0.9488) show it can report below 1.0, so a 1.0 means the generated task was trivially separable.
Also removes a pointer to an OpenNER benchmark that is not published, and adds a 'Trained on' line naming the actual domain.
README.md
CHANGED
|
@@ -24,11 +24,30 @@ metrics:
|
|
| 24 |
- **Task:** token-classification
|
| 25 |
- **Base model:** `answerdotai/ModernBERT-base`
|
| 26 |
- **Entity types (6):** BL_NO, CARGO, CONSIGNEE, CONTAINER_NO, PORT, SHIPPER
|
| 27 |
-
- **
|
| 28 |
- **Runtime:** CPU, Apple Silicon, one GPU, or browser/edge via ONNX (INT8). ~100-160 ms/doc on CPU.
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
## Why a small model
|
| 31 |
-
Fine-tuned encoders match or beat frontier LLMs on structured, convention-bound extraction, at a fraction of the latency and cost, with **zero data egress**.
|
| 32 |
|
| 33 |
## Usage
|
| 34 |
```python
|
|
@@ -40,4 +59,4 @@ model = AutoModelForTokenClassification.from_pretrained("flowxai/bolparse")
|
|
| 40 |
## License & attribution
|
| 41 |
Licensed under the **Apache License 2.0**. Copyright 2026 **FlowX.AI** (https://flowx.ai). See the `NOTICE` file. Trained on synthetic, checksum-validated data.
|
| 42 |
|
| 43 |
-
_Part of the FlowX OpenNER model family.
|
|
|
|
| 24 |
- **Task:** token-classification
|
| 25 |
- **Base model:** `answerdotai/ModernBERT-base`
|
| 26 |
- **Entity types (6):** BL_NO, CARGO, CONSIGNEE, CONTAINER_NO, PORT, SHIPPER
|
| 27 |
+
- **Trained on:** synthetic bills of lading.
|
| 28 |
- **Runtime:** CPU, Apple Silicon, one GPU, or browser/edge via ONNX (INT8). ~100-160 ms/doc on CPU.
|
| 29 |
|
| 30 |
+
## Evaluation
|
| 31 |
+
|
| 32 |
+
**Held-out F1 on synthetic data: 1.0000. Read that as a pipeline check, not as accuracy on your documents.**
|
| 33 |
+
|
| 34 |
+
Train and test are drawn from the same generator, so a rule of the form "the entity sits at position N of template T" is sufficient to score on the test split, and the reported test loss of 8.11e-07 is consistent with close to that having been learned. Human annotators do not agree with each other at 1.0 on this task.
|
| 35 |
+
|
| 36 |
+
What makes that more than a caveat is that two models from this same pipeline did not reach 1.0: `flowxai/filingtag` scores 0.6444 across 139 labels, and `flowxai/ibandetect` scores 0.9488. The pipeline is capable of reporting a number below 1.0. So a 1.0 here says the generated task was trivially separable, rather than that the model is perfect.
|
| 37 |
+
|
| 38 |
+
There is no per-label breakdown, only this aggregate, so it cannot tell you whether the label you depend on is one of the ones the model is good at. An aggregate hides the tail.
|
| 39 |
+
|
| 40 |
+
**Validate on your own documents before production use.** Treat 1.0000 as evidence that training converged and the pipeline is wired up correctly, and as nothing more.
|
| 41 |
+
|
| 42 |
+
## What this model does not do
|
| 43 |
+
It labels spans. It does not validate them, and nothing in this repository does: no check digit is verified anywhere here, not IBAN mod-97, not the Luhn algorithm, not ISIN, LEI, VIN or ISO-6346. A span this model labels as an identifier may not be a valid identifier. Validate downstream if your use needs that guarantee.
|
| 44 |
+
|
| 45 |
+
**Correction, 2026-09-14.** Until this date the card claimed that identifiers are "validated by checksum (IBAN mod-97, card Luhn, ISIN/LEI, container ISO-6346, VIN, national IDs), a correctness guarantee general LLMs lack". That sentence was shared boilerplate across the OpenNER family and it was not true of any model in it. These repositories contain a config, weights, an ONNX export, a tokenizer and a metrics file, and no validation code of any kind. If you relied on that sentence, the guarantee it described does not exist and never did.
|
| 46 |
+
|
| 47 |
+
The licence note at the foot of this card says the model was trained on "synthetic, checksum-validated data". That is a statement about how the **training corpus** was generated. It is not a statement about anything this model checks when you run it, and the two were being read as one claim.
|
| 48 |
+
|
| 49 |
## Why a small model
|
| 50 |
+
Fine-tuned encoders match or beat frontier LLMs on structured, convention-bound extraction, at a fraction of the latency and cost, with **zero data egress**.
|
| 51 |
|
| 52 |
## Usage
|
| 53 |
```python
|
|
|
|
| 59 |
## License & attribution
|
| 60 |
Licensed under the **Apache License 2.0**. Copyright 2026 **FlowX.AI** (https://flowx.ai). See the `NOTICE` file. Trained on synthetic, checksum-validated data.
|
| 61 |
|
| 62 |
+
_Part of the FlowX OpenNER model family._
|