A real Czech filing
One public filing, two official sources: the scanned annual report of Strojírny Prostějov s.r.o. for 2024 and the XML statements filed with it. The scan is read with the open-source Tesseract OCR, rows are anchored on their printed row codes, and the accounting identities of the vyhláška 500 form decide which readings to re-check. The XML is used only to score the result, never to choose a value.
Source
- Company
- Strojírny Prostějov s.r.o., IČO 05516269
- Registry
- Sbírka listin, veřejný rejstřík (or.justice.cz) — filing record
- Scan
- Výroční zpráva s výrokem auditora 2024 (komprimovaný).pdf (PDF), embedded page images at about 72 dpi
- XML
- UZ-462100029424-20250627-112807.xml (XML), schema version 06.03, amounts in thousands of CZK
Both files are pinned by SHA-256 in data/manifests/czech_filings.yaml. DealBench
has no affiliation with the company or the registry; only the statement tables of public pages
are shown, without the signature boxes. Takedown requests are honoured.
Honest reading. The page OCR alone gets 32.2 % of the cells right (31.5 % match the XML), mostly because a lone 0 at 72 dpi is rarely read: 279 cells have no reading at all. A misread counts as caught when an identity pointed at its cell, and that is a low bar here: with 193 of 239 identities unreadable on the page OCR, identities flagged 464 of the 550 cells, 91 of them already right. So "all 373 misreads caught" mostly says that 84.4 % of the cells were re-read. After the repair 96.7 % match the XML; 7 cells are still misread; all 7 sit in an identity that still fails, which is where the page says it is unsure. The remaining 11 differences are not OCR errors: the scan's own identities hold on them. Right means equal to the reference: the XML, except in the 11 cells where the sources disagree, where it is the printed value read by eye.
The sources disagree
The scan and the XML give different prior-year values in 11 asset cells. Within the XML itself, prior-year total assets (223 620) and total liabilities (228 364) differ; on the scan both are 228 364. Every difference traces to 3 rows:
- 017 Stavby: The XML's prior-year value equals its own current-year value for this row.
- 019 Oceňovací rozdíl k nabytému majetku: The XML's prior-year value equals its own current-year value for this row.
- 066 Dohadné účty aktivní: The XML has no value for this row; the scan prints one.
The other 8 are subtotals that carry those differences up to total assets. Wording rule: the sources disagree; this page does not say which one is right.
| Řád | Položka | Scan (prior year outlined) | Scan, OCR | XML | Why |
|---|---|---|---|---|---|
| 001 | AKTIVA CELKEM | 228 364 | 223 620 | A subtotal: the difference of 4 744 is the sum of the differences in rows 003, 037. | |
| 003 | Stálá aktiva | 111 144 | 106 428 | A subtotal: the difference of 4 716 is the sum of the differences in row 014. | |
| 014 | Dlouhodobý hmotný majetek | 98 983 | 94 267 | A subtotal: the difference of 4 716 is the sum of the differences in rows 015, 019. | |
| 015 | Pozemky a stavby | 44 805 | 42 750 | A subtotal: the difference of 2 055 is the sum of the differences in row 017. The XML's prior-year value equals its own current-year value for this row. | |
| 017 | Stavby | 40 682 | 38 627 | The XML's prior-year value equals its own current-year value for this row. | |
| 019 | Oceňovací rozdíl k nabytému majetku | 39 910 | 37 249 | The XML's prior-year value equals its own current-year value for this row. | |
| 037 | Oběžná aktiva | 116 838 | 116 810 | A subtotal: the difference of 28 is the sum of the differences in row 046. | |
| 046 | Pohledávky | 50 079 | 50 051 | A subtotal: the difference of 28 is the sum of the differences in row 057. | |
| 057 | Krátkodobé pohledávky | 50 079 | 50 051 | A subtotal: the difference of 28 is the sum of the differences in row 061. | |
| 061 | Pohledávky – ostatní | 2 744 | 2 716 | A subtotal: the difference of 28 is the sum of the differences in row 066. | |
| 066 | Dohadné účty aktivní | 28 | absent | The XML has no value for this row; the scan prints one. |
Identity checks
239 identities generated from the row tree| Identity | Page OCR: holds / fails / unreadable | Repaired | XML |
|---|---|---|---|
| Subtotals (parent = Σ children, per column) | 7 / 21 / 130 | 151 / 7 / 0 | 158 / 0 / 0 |
| Netto = brutto + korekce (assets) | 6 / 9 / 62 | 75 / 2 / 0 | 77 / 0 / 0 |
| Aktiva = Pasiva (per period) | 0 / 2 / 0 | 2 / 0 / 0 | 1 / 1 / 0 |
| Rozvaha 098 = VZZ 55 (result for the period) | 1 / 0 / 1 | 2 / 0 / 0 | 2 / 0 / 0 |
Identities that still fail on either source
| Identity | Scan, repaired | XML |
|---|---|---|
| 038 = 039 + 040 + 041 + 044 + 045 (netto) | fails 45 613 vs 45 612 | holds |
| 041 = 042 + 043 (korekce) | fails −553 vs −533 | holds |
| 122 = 123 + 126 + 127 + 128 + 129 + 130 + 131 + 132 (prior) | fails 87 768 vs 81 768 | holds |
| 132 = 133 + 134 + 135 + 136 + 137 + 138 + 139 (prior) | fails 22 118 vs 22 028 | holds |
| 14 = 15 + 18 + 19 (current) | fails 10 031 vs 11 101 | holds |
| 30 = 01 + 02 - 03 - 07 - 08 - 09 - 14 + 20 - 24 (current) | fails 13 138 vs 2 325 690 | holds |
| 56 = 01 + 02 (current) | fails 256 959 vs 2 569 511 | holds |
| 042: netto = brutto + korekce | fails 14 233 vs 14 253 | holds |
| 045: netto = brutto + korekce | fails 25 vs 26 | holds |
| AKTIVA CELKEM 001 = PASIVA CELKEM 078 (prior year) | holds | fails 223 620 vs 228 364 |
An identity failing on the repaired scan marks a cell the OCR could not settle; all 7 remaining OCR errors are inside these.
Every row: scan, OCR and XML
77 rows| Řád | Položka | Scan | Page OCR | Repaired | XML | Verdict and OCR passes |
|---|---|---|---|---|---|---|
| 001 | AKTIVA CELKEM | 228 | 228 364(corrected by the repair)(re-read) | 223 620 | sources disagree OCR passes
| |
| 002 | A. Pohledávky za upsaný základní kapitál | 0 | 0(re-read) | 0 | matches XML OCR passes
| |
| 003 | B. Stálá aktiva | 111 144 | 111 144(re-read) | 106 428 | sources disagree OCR passes
| |
| 004 | B.I. Dlouhodobý nehmotný majetek | 9 501 | 1 959(corrected by the repair)(re-read) | 1 959 | matches XML OCR passes
| |
| 005 | B.I.1 Nehmotné výsledky vývoje | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 006 | B.I.2 Ocenitelná práva | 1 959 | 1 959(re-read) | 1 959 | matches XML OCR passes
| |
| 007 | B.I.2.1 Software | 9 551 | 1 959(corrected by the repair)(re-read) | 1 959 | matches XML OCR passes
| |
| 008 | B.I.2.2 Ostatní ocenitelná práva | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 009 | B.I.3 Goodwill (+/-) | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 010 | B.I.4 Ostatní dlouhodobý nehmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 011 | B.I.5 Poskytnuté zálohy na dlouhodobý nehmotný majetek a nedokončený dlouhodobý nehmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 012 | B.I.5.1 Poskytnuté zálohy na dlouhodobý nehmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 013 | B.I.5.2 Nedokončený dlouhodobý nehmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 014 | B.II. Dlouhodobý hmotný majetek | 963 | 98 983(corrected by the repair)(re-read) | 94 267 | sources disagree OCR passes
| |
| 015 | B.II.1 Pozemky a stavby | 44 008 | 44 805(corrected by the repair)(re-read) | 42 750 | sources disagree OCR passes
| |
| 016 | B.II.1.1 Pozemky | 4 123 | 4 123(re-read) | 4 123 | matches XML OCR passes
| |
| 017 | B.II.1.2 Stavby | 40 682 | 40 682(re-read) | 38 627 | sources disagree OCR passes
| |
| 018 | B.II.2 Hmotné movité věci a jejich soubory | 14 100 | 14 100(re-read) | 14 100 | matches XML OCR passes
| |
| 019 | B.II.3 Oceňovací rozdíl k nabytému majetku | 3 | 39 910(corrected by the repair)(re-read) | 37 249 | sources disagree OCR passes
| |
| 020 | B.II.4 Ostatní dlouhodobý hmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 021 | B.II.4.1 Pěstitelské celky trvalých porostů | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 022 | B.II.4.2 Dospělá zvířata a jejich skupiny | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 023 | B.II.4.3 Jiný dlouhodobý hmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 024 | B.II.5 Poskytnuté zálohy na dlouhodobý hmotný majetek a nedokončený dlouhodobý hmotný majetek | — | 168(corrected by the repair)(re-read) | 168 | matches XML OCR passes
| |
| 025 | B.II.5.1 Poskytnuté zálohy na dlouhodobý hmotný majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 026 | B.II.5.2 Nedokončený dlouhodobý hmotný majetek | 188 | 168(corrected by the repair)(re-read) | 168 | matches XML OCR passes
| |
| 027 | B.III. Dlouhodobý finanční majetek | 10 202 | 10 202(re-read) | 10 202 | matches XML OCR passes
| |
| 028 | B.III.1 Podíly – ovládaná nebo ovládající osoba | 202 | 202 | 202 | matches XML OCR passes
| |
| 029 | B.III.2 Zápůjčky a úvěry – ovládaná nebo ovládající osoba | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 030 | B.III.3 Podíly – podstatný vliv | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 031 | B.III.4 Zápůjčky a úvěry – podstatný vliv | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 032 | B.III.5 Ostatní dlouhodobé cenné papíry a podíly | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 033 | B.III.6 Zápůjčky a úvěry – ostatní | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 034 | B.III.7 Ostatní dlouhodobý finanční majetek | 10 000 | 10 000(re-read) | 10 000 | matches XML OCR passes
| |
| 035 | B.III.7.1 Jiný dlouhodobý finanční majetek | 10 | 10 000(corrected by the repair)(re-read) | 10 000 | matches XML OCR passes
| |
| 036 | B.III.7.2 Poskytnuté zálohy na dlouhodobý finanční majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 037 | C. Oběžná aktiva | — | 116 838(corrected by the repair)(re-read) | 116 810 | sources disagree OCR passes
| |
| 038 | C.I. Zásoby | 56 057 | 56 057(re-read) | 56 057 | matches XML OCR passes
| |
| 039 | C.I.1 Materiál | 15 048 | 15 048 | 15 048 | matches XML OCR passes
| |
| 040 | C.I.2 Nedokončená výroba a polotovary | — | 15 768(corrected by the repair)(re-read) | 15 768 | matches XML OCR passes
| |
| 041 | C.I.3 Výrobky a zboží | — | 25 241(corrected by the repair)(re-read) | 25 241 | matches XML OCR passes
| |
| 042 | C.I.3.1 Výrobky | 2 521 | 25 241(corrected by the repair)(re-read) | 25 241 | matches XML OCR passes
| |
| 043 | C.I.3.2 Zboží | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 044 | C.I.4 Mladá a ostatní zvířata a jejich skupiny | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 045 | C.I.5 Poskytnuté zálohy na zásoby | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 046 | C.II. Pohledávky | — | 50 079(corrected by the repair)(re-read) | 50 051 | sources disagree OCR passes
| |
| 047 | C.II.1 Dlouhodobé pohledávky | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 048 | C.II.1.1 Pohledávky z obchodních vztahů | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 049 | C.II.1.2 Pohledávky – ovládaná nebo ovládající osoba | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 050 | C.II.1.3 Pohledávky – podstatný vliv | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 051 | C.II.1.4 Odložená daňová pohledávka | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 052 | C.II.1.5 Pohledávky – ostatní | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 053 | C.II.1.5.1 Pohledávky za společníky | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 054 | C.II.1.5.2 Dlouhodobé poskytnuté zálohy | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 055 | C.II.1.5.3 Dohadné účty aktivní | 0 | 0 | 0 | matches XML OCR passes
| |
| 056 | C.II.1.5.4 Jiné pohledávky | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 057 | C.II.2 Krátkodobé pohledávky | 50 079 | 50 079 | 50 051 | sources disagree OCR passes
| |
| 058 | C.II.2.1 Pohledávky z obchodních vztahů | 36 765 | 36 765 | 36 765 | matches XML OCR passes
| |
| 059 | C.II.2.2 Pohledávky – ovládaná nebo ovládající osoba | 10 570 | 10 570 | 10 570 | matches XML OCR passes
| |
| 060 | C.II.2.3 Pohledávky – podstatný vliv | 0 | 0 | 0 | matches XML OCR passes
| |
| 061 | C.II.2.4 Pohledávky – ostatní | 2 744 | 2 744(re-read) | 2 716 | sources disagree OCR passes
| |
| 062 | C.II.2.4.1 Pohledávky za společníky | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 063 | C.II.2.4.2 Sociální zabezpečení a zdravotní pojištění | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 064 | C.II.2.4.3 Stát – daňové pohledávky | — | 2 245(corrected by the repair)(re-read) | 2 245 | matches XML OCR passes
| |
| 065 | C.II.2.4.4 Krátkodobé poskytnuté zálohy | 22 155 | 195(corrected by the repair)(re-read) | 195 | matches XML OCR passes
| |
| 066 | C.II.2.4.5 Dohadné účty aktivní | — | 28(corrected by the repair)(re-read) | 0 | sources disagree OCR passes
| |
| 067 | C.II.2.4.6 Jiné pohledávky | 278 | 276(corrected by the repair)(re-read) | 276 | matches XML OCR passes
| |
| 068 | C.III. Krátkodobý finanční majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 069 | C.III.1 Podíly – ovládaná nebo ovládající osoba | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 070 | C.III.2 Ostatní krátkodobý finanční majetek | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 071 | C.IV. Peněžní prostředky | 10 | 10 702(corrected by the repair)(re-read) | 10 702 | matches XML OCR passes
| |
| 072 | C.IV.1 Peněžní prostředky v pokladně | — | 38(corrected by the repair)(re-read) | 38 | matches XML OCR passes
| |
| 073 | C.IV.2 Peněžní prostředky na účtech | 10 | 10 664(corrected by the repair)(re-read) | 10 664 | matches XML OCR passes
| |
| 074 | D. Časové rozlišení aktiv | 2 | 382(corrected by the repair)(re-read) | 382 | matches XML OCR passes
| |
| 075 | D.1 Náklady příštích období | — | 382(corrected by the repair)(re-read) | 382 | matches XML OCR passes
| |
| 076 | D.2 Komplexní náklady příštích období | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
| |
| 077 | D.3 Příjmy příštích období | — | 0(corrected by the repair)(re-read) | 0 | matches XML OCR passes
|
Red: differs from the reference (the XML, or the printed value where the sources disagree). Green with ✓: corrected by the repair. Italic XML values are rows the XML omits (it leaves out zero rows), read as 0. * the cell was re-read because an identity pointed at it; open “OCR passes” in a row for every reading of the cell and of its row code.
Method
- Page OCR: Tesseract psm 3, ces+eng on the page rendered at 300 dpi (the same parser as the synthetic room).
- Re-reads: crops of the embedded image upscaled x4; x5; x6; x8; x4, binarised at 160; x6, binarised at 160, one line of digits each. The scan is about 72 dpi, so rendering the PDF at a higher resolution would add nothing.
- Pages are found by matching each page's OCR text against the statements' row labels and kept only if they carry the statement's ruled form.
- Rows are anchored on the printed row code (řád): the page OCR's code when it reads cleanly, otherwise a re-read of the code cell, aligned to the vyhláška 500 row order.
- Every value is first read by the page OCR. Cells that a failing or unreadable identity points at are re-read from crops of the embedded page image, repeated while new cells are pointed at; disagreeing re-reads are settled by the identities, choosing only among values some OCR pass produced.
- Korekce is printed as a deduction, so a re-read that lost its minus sign is negated; no other sign is changed.
- The XML is never used to choose a value. A reading that differs from the XML counts as a source disagreement only if every identity through it holds on the scan's own values and two OCR passes or two identities back it; otherwise it counts as an OCR error.
- No vision model and no API was used for this page: everything runs offline with Tesseract and
is cached, so
make czechreproduces it.
Also checked: XML aktiva row 78 has no printed counterpart (brutto 0, korekce 0, netto 0, netto_prior 0). XML pasiva row 67 has no printed counterpart (current 0, prior 0).
Source: Sbírka listin, veřejný rejstřík (or.justice.cz), filing record https://or.justice.cz/ias/ui/vypis-sl-detail?dokument=87344310&subjektId=949174&spis=1403435. Public documents of Strojírny Prostějov s.r.o., shown for research. No affiliation with the company; synthetic documents are never attached to it. Takedown requests are honoured.