Views
No views yet
1from transformers import TrOCRProcessor, VisionEncoderDecoderModel
2from PIL import Image
3import requests
4
5img_path = 'path/to/image'
6image = Image.open(img_path)
7
8processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
9model = VisionEncoderDecoderModel.from_pretrained('Riksarkivet/trocr-base-handwritten-hist-swe-2')
10pixel_values = processor(images=image, return_tensors="pt").pixel_values
11
12generated_ids = model.generate(pixel_values)
13generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]htrflow pipeline <path/to/yaml> <path/to/image>. A .yaml file for an entire pipeline, transcribing full pages, could look like this:1
2# Demo pipeline for running text
3
4steps:
5
6# Region segmentation
7- step: Segmentation
8 settings:
9 model: yolo
10 model_settings:
11 model: Riksarkivet/yolov9-regions-1
12 generation_settings:
13 conf: 0.3
14 batch_size: 32
15
16# Line segmentation
17- step: Segmentation
18 settings:
19 model: yolo
20 model_settings:
21 model: Riksarkivet/yolov9-lines-within-regions-1
22 generation_settings:
23 conf: 0.3
24 batch_size: 16
25
26- step: TextRecognition
27 settings:
28 model: WordLevelTrocr
29 model_settings:
30 model: Riksarkivet/trocr-base-handwritten-hist-swe-2
31 generation_settings:
32 batch_size: 16
33 num_beams: 1
34
35- step: ReadingOrderMarginalia
36 settings:
37 two_page: always
38
39# Export to Alto and Page XML
40- step: Export
41 settings:
42 dest: outputs/alto
43 format: alto
44
45- step: Export
46 settings:
47 dest: outputs/page
48 format: page| Dataset | WER | CER | Train Lines | Eval Lines |
|---|---|---|---|---|
| krigshovrattens_dombocker_lines | 0.0330 | 0.0075 | 16,887 | 1,877 |
| stockholms_stadsarkiv_allmana_barnhuset_1700_lines | 0.0647 | 0.0120 | 565 | 142 |
| stockholms_stadsarkiv_blandat_2_1700_lines | 0.0807 | 0.0170 | 25,024 | 2,781 |
| goteborgs_poliskammare_fore_1900_lines | 0.0800 | 0.0187 | 339,297 | 17,858 |
| stockholms_stadsarkiv_stockholms_domkapitel_1700_lines | 0.0948 | 0.0187 | 96,409 | 5,075 |
| stockholms_stadsarkiv_politikollegiet_1700_lines | 0.1108 | 0.0225 | 120,238 | 6,329 |
| bergskollegium_relationer_och_skrivelser_lines | 0.1056 | 0.0253 | 62,201 | 6,912 |
| stockholms_stadsarkiv_stadens_kamnarsratt_1700_lines | 0.1252 | 0.0278 | 38,330 | 4,259 |
| svea_hovratt_lines | 0.1484 | 0.0313 | 36,884 | 4,099 |
| stockholms_stadsarkiv_stockholms_domkapitel_1800_lines | 0.1400 | 0.0324 | 2,070 | 230 |
| stockholms_stadsarkiv_handelskollegiet_1600_1700_lines | 0.1785 | 0.0350 | 9,201 | 1,023 |
| frihetstidens_utskottshandlingar_lines | 0.1481 | 0.0362 | 13,490 | 1,499 |
| stockholms_stadsarkiv_kungliga_hovkonsistoriet_1700_lines | 0.1541 | 0.0364 | 5,753 | 640 |
| national_archives_finland_court_records_lines | 0.1607 | 0.0368 | 147,456 | 7,761 |
| stockholms_stadsarkiv_blandat_1600_1700_lines | 0.1505 | 0.0379 | 16,137 | 1,794 |
| stockholms_stadsarkiv_blandat_3_1600_lines | 0.1633 | 0.0400 | 43,142 | 4,794 |
| stockholms_stadsarkiv_norra_forstadens_kamnarsratt_1600_1700_lines | 0.1755 | 0.0463 | 18,474 | 2,053 |
| carl_fredrik_pahlmans_resejournaler_lines | 0.1768 | 0.0482 | 7,081 | 787 |
| stockholms_stadsarkiv_sollentuna_haradsratt_1700_1800_lines | 0.1921 | 0.0505 | 19,096 | 2,122 |
| stockholms_stadsarkiv_byggningskollegium_1600_lines | 0.2262 | 0.0514 | 3,104 | 345 |
| ra_enstaka_sidor_lines | 0.1991 | 0.0538 | 5,078 | 565 |
| trolldomskommissionen_lines | 0.2321 | 0.0600 | 33,498 | 3,722 |
| stockholms_stadsarkiv_stockholms_domkapitel_1600_lines | 0.2170 | 0.0607 | 11,619 | 1,292 |
| stockholms_stadsarkiv_botkyrka_kyrkoarkiv_1600_1800_lines | 0.2548 | 0.0627 | 3,617 | 402 |
| gota_hovratt_lines | 0.2450 | 0.0630 | 2,421 | 269 |
| bergmastaren_i_nora_htr_lines | 0.2558 | 0.0709 | 7,916 | 880 |
| bergskollegium_advokatfiskalkontoret_lines | 0.2906 | 0.0722 | 2,411 | 268 |
| jl_fornsallskap_jamtlands_domsaga_lines | 0.2585 | 0.0732 | 60,544 | 6,728 |
| alvsborgs_losen_lines | 0.1896 | 0.0806 | 5,632 | 626 |
| jonkopings_radhusratt_och_magistrat_lines | 0.2864 | 0.0853 | 1,179 | 131 |
| national_archives_finland_letters_recipes_lines | 0.3857 | 0.1360 | 651 | 163 |
eval_htr_out_of_domain_lines evaluation set, which contains lines from archives that were not at all included in the training data. So these are the results one would expect if one uses this model out-of-the-box on just any running text document within the model's time span.| Dataset | WER | CER | Eval Lines |
|---|---|---|---|
| 1792_R0002231_eval_lines | 0.1190 | 0.0250 | 501 |
| 1794-1795_A0068546_eval_lines | 0.1503 | 0.0303 | 510 |
| 1775-1786_A0068551_eval_lines | 0.2203 | 0.0543 | 525 |
| 1841_Z0000017_eval_lines | 0.2247 | 0.0555 | 470 |
| 1690_A0066756_eval_lines | 0.2571 | 0.0611 | 249 |
| 1716_A0017151_eval_lines | 0.2517 | 0.0650 | 558 |
| 1824_H0000743_eval_lines | 0.2684 | 0.0674 | 260 |
| 1699-1700_C0113233_eval_lines | 0.2713 | 0.0691 | 394 |
| 1845-1857_B0000011_eval_lines | 0.2546 | 0.0706 | 153 |
| 1812_A0069332_eval_lines | 0.2868 | 0.0793 | 69 |
| 1659-1674_R0000568_eval_lines | 0.3278 | 0.0886 | 304 |
| 1755-1756_C0112394_eval_lines | 0.3440 | 0.0918 | 248 |
| 1723_H0000374_eval_lines | 0.3105 | 0.1140 | 378 |
| 1887-1892_A0002409_eval_lines | 0.3670 | 0.1297 | 784 |
| 1679_R0002397_eval_lines | 0.4768 | 0.1422 | 88 |
| 1800_C0101725_eval_lines | 0.4459 | 0.1767 | 37 |
| 1871_K0017448_eval_lines | 0.4504 | 0.1945 | 331 |
| 1654_R0001308_eval_lines | 0.5200 | 0.2179 | 199 |