# Bengali.AI Handwritten Grapheme Classification — Data

来源：https://www.kaggle.com/competitions/bengaliai-cv19/data

采集时间：2026-10-19T06:32:17Z

**Challenge and dataset summary available at [https://arxiv.org/abs/2010.00170](https://arxiv.org/abs/2010.00170)**

**Published @ [ICDAR21](https://link.springer.com/chapter/10.1007/978-3-030-86337-1_26)**

Citation:

`@inproceedings{alam2021large,
  title={A Large Multi-target Dataset of Common Bengali Handwritten Graphemes},
  author={Alam, Samiul and Reasat, Tahsin and Sushmit, Asif Shahriyar and Siddique, Sadi Mohammad and Rahman, Fuad and Hasan, Mahady and Humayun, Ahmed Imtiaz},
  booktitle={International Conference on Document Analysis and Recognition},
  pages={383--398},
  year={2021},
  organization={Springer}
}`

This dataset contains images of individual hand-written [Bengali characters](https://en.wikipedia.org/wiki/Bengali_alphabet).
Bengali characters (graphemes) are written by combining three components: a grapheme_root, vowel_diacritic, and consonant_diacritic. Your challenge is to classify the components of the grapheme in each image. There are roughly 10,000 possible graphemes, of which roughly 1,000 are represented in the training set. The test set includes some graphemes that do not exist in train but has no new grapheme components. It takes a lot of volunteers filling out [sheets like this](https://github.com/BengaliAI/graphemePrepare/blob/master/collection/A4/form_1.jpg) to generate a useful amount of real data; focusing the problem on the grapheme components rather than on recognizing whole graphemes should make it possible to assemble a Bengali OCR system without handwriting samples for all 10,000 graphemes.

## Files
####   **train.csv**
- `image_id`: the foreign key for the parquet files
- `grapheme_root`: the first of the three target classes
- `vowel_diacritic`: the second target class
- `consonant_diacritic`: the third target class
- `grapheme`: the complete character. Provided for informational purposes only, you should not need to use this.

####   **test.csv**
Every image in the test set will require three rows of predictions, one for each component. This csv specifies the exact order for you to provide your labels.
- `row_id`: foreign key to the sample submission
- `image_id`: foreign key to the parquet file
- `component`: the required target class for the row (grapheme_root, vowel_diacritic, or consonant_diacritic)

####   **sample_submission.csv**
- `row_id`: foreign key to `test.csv`
- `target`: the target column

####   **(train/test).parquet**
Each parquet file contains tens of thousands of 137x236 grayscale images. The images have been provided in the parquet format for I/O and space efficiency. Each row in the parquet files contains an `image_id` column, and the flattened image.

####   **class_map.csv**
Maps the class labels to the actual Bengali grapheme components.

This is a [synchronous rerun code competition](https://www.kaggle.com/docs/competitions#kernels-only-competitions), you can assume that the complete test set will contain essentially the same size and number of images as the training set. Consider performing inference on just one batch at a time to avoid memory errors. Only the first few rows/images in the test set and sample submission files can be downloaded. These samples provided so you can review the basic structure of the files and to ensure consistency between the publicly available set of file names and those your code will have access to while it is being rerun for scoring.


The parquet files were written with pyarrow v 0.10.0 for compatibility with notebooks; you might not be able to read them with other versions of [arrow/parquet](https://arrow.apache.org/).

**Update: March 2020**

Two of the consonant diacritics র্ (class 2) and ্র ( class 5) can coexist in the same grapheme.
The original labeling scheme did not account for this possibility so these cases are labeled as class (2) for the purpose of this competition.
 
**class_map_corrected.csv**  is an updated class map that adds this special case as class 7, 

**train_multi_diacritics.csv** is a list of the affected rows in the training set.  Approximately 450 rows were affected in each of the train and test sets.

