What FineParser sends to ABBYY
- License validation. When a document is processed, FineParser checks your account’s remaining page balance and debits the number of pages parsed. This is the billing record. If the debit does not settle, the result is withheld.
- Telemetry. FineParser emits one trace span and one set of metric recordings for every job, so that ABBYY can attribute usage to your account and understand how the product is used. Telemetry is a usage signal, not a billing mechanism, and it is always on in release builds.
What telemetry contains
FineParser uses OpenTelemetry and emits two kinds of signals: metrics, which are aggregated counts and histograms, and traces, which carry one span per job. Both use the same small set of attributes.Attributes on every signal
These values are fixed when the container starts and attached to everything it emits.Per-job attributes
Every per-job attribute comes from a closed set of allowed values. A value outside its set is dropped rather than emitted, so a bug in the calling code cannot put an arbitrary string on a signal.
An
outcome of rejected means the request was refused before any work was done, for example because no file was attached, the output format was unsupported, or the upload was malformed. It is kept separate from error so that a client misusing the API does not show up as FineParser failing.
A decision of unknown means the licensing server returned a status the container does not recognise. FineParser denies the job in that case, because default-deny is the product’s posture, and the decision is reported rather than dropped.
Metrics
The license key is attached to every metric recording as well as to the container-level attributes, so usage can be grouped by license regardless of how a downstream backend maps resource attributes.
Traces
The job span’s status is set to error only when the outcome is
error.
What FineParser never collects
FineParser does not collect document content, recognized text, filenames, file paths, file sizes, customer names, email addresses, account identifiers, user identities, or IP addresses. A filename can enter the telemetry module through exactly one function, which reads the extension, returns thedoc_type bucket, and discards everything else. A hostile-input test in the FineParser test suite feeds personal names, SSN-shaped strings, email addresses, and scratch paths through the module and asserts that none of it reaches a sink.
The license key is the single deliberate account-linked value. The languages attribute is a deployment setting rather than customer data: it is fixed at startup and identical for every job the container processes.
The module can only emit the eleven attribute keys listed on this page. No exported function accepts an arbitrary attribute map, so adding a field requires a code change to the allowlist.
Inspecting and copying the stream
You do not have to take this page’s word for it. Two environment variables let you see the stream, and three let you send a copy wherever you like.
You can add a sink but never remove one. Your endpoint and ABBYY’s receive the identical stream, and this is enforced by the code’s structure rather than by policy: there is no ABBYY-only attribute and no second code path anywhere in the telemetry module. What you see on stdout or in your own collector is what ABBYY sees.
FineParser does not expose a Prometheus scrape endpoint and does not emit the OpenTelemetry logs signal. Per-job events are carried as span attributes instead.
Unbilled pages
Thefineparser.pages.unbilled counter records pages that were delivered to you without a settled charge. This only happens when the licensing server returns a 5xx error or a 404 after the work is done, in which case FineParser releases your finished result rather than withholding it. A timeout or a certificate failure blocks the result instead, so this counter cannot represent anyone bypassing payment. A number above zero means the licensing vendor had a bad day, not that you did.
Known limitations
A container that is stopped within about a minute of serving a job loses that job’s telemetry, because the exporter’s shutdown does not wait for the final HTTP response. Long-running containers deliver everything. License metering is unaffected and remains the billing record, so the only effect of a fast stop is a small undercount in ABBYY’s usage dashboards.Network requirements
The container must be able to reach ABBYY’s licensing infrastructure at all times. Allow outbound traffic to both of these ranges through your firewall or egress proxy:
Only license validation and telemetry travel over this connection. Document content never does.
