andynoodles/Taiwan-Financial
Taiwan Financial Report OCR — block-level (zh-Hant) Block-level OCR pairs synthesised from Traditional-Chinese (zh-Hant) Taiwan listed-company financial reports. Each row is one cropped layout region with its block type and the vision-LLM transcription — including raw OTSL for tables. 194,314 rows from 138 financial reports (合併財報, IFRS consolidated, type AI1) 15 companies across major industries, 2021–2023, all four quarters Source: 公開資訊觀測站 / MOPS (doc.twse.com.tw) — public… See the full description on the dataset page: https://huggingface.co/datasets/andynoodles/Taiwan-Financial.
Taiwan Financial Report OCR — block-level (zh-Hant)
Block-level OCR pairs synthesised from Traditional-Chinese (zh-Hant) Taiwan listed-company financial reports. Each row is one cropped layout region with its block type and the vision-LLM transcription — including raw OTSL for tables.
- 194,314 rows from 138 financial reports (合併財報, IFRS consolidated, type
AI1) - 15 companies across major industries, 2021–2023, all four quarters
- Source: 公開資訊觀測站 / MOPS (
doc.twse.com.tw) — public regulatory filings
How it was made
PDF pages → layout detection (PP-DocLayoutV3) → per-region crops → OCR by a PaddleOCR-VL vision-LLM (the teacher) → per-type revision by a Qwen3.6 vision-LLM (the reviser) → Traditional-Chinese normalization (OpenCC). This is a distillation dataset: there is no human ground truth — labels are model output and may contain errors. Because the source PDFs are born-digital, the reviser is additionally grounded in each PDF's own text layer (the real characters/digits, extracted per-block via the bbox), which removes most character-level OCR noise.
Two text fields are provided per block:
- `ocr` — the teacher's raw output, captured before any rendering post-processing: tables are OTSL (not HTML), formulas keep native
\(...\)delimiters, everything else is plain text. (Repetitive-loop truncation is applied.) - `ocr_revised` — the revised label (populated for >99.9% of rows; the rare
nullmeans no trustworthy revision → useocr). Produced per type: - tables — re-transcribed from scratch by Qwen3.6 given the crop image + the PDF text-layer text for the region (the raw OCR is not shown, so its errors can't anchor the output). The model emits a strict HTML table which is deterministically converted to OTSL (regular grid; rowspan/colspan →
lcel/ucel/xcel), with information-free padding columns/rows collapsed. 14 / 29,428 failed conversion →null. - seals — read with full-page context: the stamp crop + the rendered page (stamp location marked) + the page's text layer, using the priors that large stamps are company names and small stamps personal names from the signature lines. 1 / 1,835 unresolved →
null. - all other types — Qwen3.6 correction of the raw OCR against the crop image (instruct mode; anti-hallucination prompt).
Both text fields are normalized to Traditional Chinese with OpenCC (s2t): the documents are Traditional-only, so any Simplified characters the VLMs emitted are OCR errors and are converted back (统→統, 陈→陳, …). OTSL tags, LaTeX, digits, and punctuation are unaffected.
Schema
Type distribution
text 44.2% · table 15.1% · paragraph_title 14.8% · number 10.6% · vision_footnote 4.5% · figure_title 4.4% · header 2.1% · doc_title 1.9% · seal 0.9% · footer 0.9% · image 0.3% · plus footnote, content, reference_content, chart, formula, aside_text, algorithm.
Companies
TSMC 台積電, Hon Hai 鴻海, MediaTek 聯發科, Chunghwa Telecom 中華電, Cathay FHC 國泰金, Fubon FHC 富邦金, Formosa Plastics 台塑, Nan Ya 南亞, China Steel 中鋼, Evergreen 長榮, Uni-President 統一, President Chain 統一超, Delta 台達電, Feng Tay 豐泰, Hotai Motor 和泰車.
Source documents
The original PDFs are included under `source_pdfs/` (138 files) with `source_pdfs/manifest.jsonl` (per-file co_id, company, year, season, report_type, source url, bytes, sha256). A row's doc_id ({co_id}_{year}_{quarter}_AI1) maps to the matching manifest entry / PDF, so every block is traceable back to its page in the source filing.
Usage
from datasets import load_dataset
ds = load_dataset("andynoodles/TaiwanFinancial", split="train")
row = ds[0]
row["image"] # PIL crop
row["type"], row["ocr"] # e.g. "table", "<fcel>資產<fcel>附註..."
tables = ds.filter(lambda r: r["type"] == "table") # OTSL tables
text = ds.filter(lambda r: r["type"] in ("text", "paragraph_title", "doc_title"))Quality & limitations
- Model-generated labels (distillation) — not human-verified, though tables and seals are grounded in the PDF text layer / page context (see above), which removes most character-level noise.
- Tables: both
ocrandocr_revisedare OTSL.ocr_revisedis a fresh text-layer-grounded transcription, so its cell segmentation can legitimately differ fromocr(e.g. recovered columns, merged wrapped labels). A small residue of tables may carry an extra empty column from a shifted header. - `ocr` (raw) is least reliable for:
seal(heavy hallucination on stylized stamp glyphs — butocr_revisedresolves them against the page's signature lines),number(tiny markers), andimageregions. Filter by `type` and preferocr_revisedwhere quality matters. ocr_revisedmay differ fromocrin benign ways (spacing/punctuation-width normalisation, Simplified→Traditional fixes, and for tables/seals the text-layer-faithful rendering described above; e.g. the PDF text layer's half-width parentheses where OCR used full-width).- 3 of 138 PDFs have no usable text layer (1 scanned, 2 with un-mapped CID fonts); their tables/seals were revised from images alone.
Acknowledgements
This dataset was produced with the following open models and tools — sincere thanks to their authors and communities:
- [PP-DocLayoutV3](https://huggingface.co/PaddlePaddle/PP-DocLayoutV3_safetensors) — document layout detection.
- [PaddleOCR-VL-1.6](https://huggingface.co/PaddlePaddle/PaddleOCR-VL-1.6) — vision-language OCR; the teacher that produced the
ocrfield. - [Qwen3.6-35B-A3B-FP8](https://huggingface.co/Qwen/Qwen3.6-35B-A3B-FP8) — vision-language model used for OCR revision (
ocr_revised). - [OpenCC](https://github.com/BYVoid/OpenCC) — Simplified→Traditional Chinese conversion.
License
Built from MOPS / TWSE public regulatory filings (Taiwan government open disclosure). Provided for research and development use; verify terms for your own use case. Labels are generated by PaddleOCR-VL and Qwen3.6.
Citation (required)
This dataset is part of the Taiwan Document OCR (zh-Hant) collection by Andy Chen (andynoodles). If you use this dataset — in research, training data, products, or derivatives — you must cite it:
@misc{chen2026_financial,
title = {Taiwan Financial Report OCR (block-level, zh-Hant)},
author = {Chen, Andy (andynoodles)},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/datasets/andynoodles/TaiwanFinancial}},
note = {Part of the Taiwan Document OCR (zh-Hant) collection}
}Citing this dataset is required in addition to the source-attribution noted under License & provenance above. Please retain both this citation and the original source attribution in any redistribution or derived work.
