PyLaia enhancement

#7
by johnlockejrr - opened

Because you disabled the issues on PyLaia gitlab, I can't make my point there.
kenlm has an option to build it as binary from the text version, being much faster. It works with PyLaia the same.
[https://kheafield.com/code/kenlm/]
Tested.

Original:

../kenlm/build/bin/lmplz --order 6 --text corpus_characters.txt --arpa language_model.arpa --discount_fallback
gzip language_model.arpa

Binary:

../kenlm/build/bin/build_binary language_model.arpa language_model.binary

Hi!

Yes, it was becoming difficult for us to deal with issues on multiple repos, so we created https://support.teklia.com/ to centralize discussions about our models and products. Don't hesitate to post there!

Thanks for the tip, I will give it a try and update the documentation accordingly. Do you have any idea how much faster it runs with the binary?

Did some tests:

  • predicting on CPU, sometimes faster, sometimes not
  • predicting on GPU, much faster.

text arpa file

(pylaia-py3.10) incognito@DESKTOP-H1BS9PO:~/pylaia-train$ time pylaia-htr-decode-ctc --config syrnt_text.yaml
[2025-01-20 11:52:19,618 INFO laia] Arguments: {'syms': 'syrnt_pylaia_train/syms.txt', 'img_list': 'img_list.txt', 'img_dirs': ['images/'], 'common': CommonArgs(seed=74565, train_path='', model_filename='syrnt_pylaia_train/model', experiment_dirname='syrnt_pylaia_train', monitor=<Monitor.va_cer: 'va_cer'>, checkpoint=None), 'data': DataArgs(batch_size=8, color_mode=<ColorMode.L: 'L'>, num_workers=None, reading_order=<ReadingOrder.RTL: 'RTL'>), 'decode': DecodeArgs(include_img_ids=True, separator=' ', join_string='', use_symbols=True, convert_spaces=True, input_space='<space>', output_space=' ', segmentation=None, temperature=1.0, print_line_confidence_scores=False, print_word_confidence_scores=False, use_language_model=True, language_model_path='syrnt_pylaia_train/language_model.arpa.gz', language_model_weight=1.5, tokens_path='syrnt_pylaia_train/tokens.txt', lexicon_path='syrnt_pylaia_train/lexicon.txt', unk_token='<unk>', blank_token='<ctc>'), 'trainer': TrainerArgs(gradient_clip_val=0.0, gradient_clip_algorithm='norm', process_position=0, num_nodes=1, num_processes=1, devices=None, gpus=1, auto_select_gpus=False, tpu_cores=None, ipus=None, progress_bar_refresh_rate=1, overfit_batches=0.0, track_grad_norm=-1, check_val_every_n_epoch=1, fast_dev_run=False, accumulate_grad_batches=1, max_epochs=None, min_epochs=None, max_steps=None, min_steps=None, max_time=None, limit_train_batches=1.0, limit_val_batches=1.0, limit_test_batches=1.0, limit_predict_batches=1.0, val_check_interval=1.0, flush_logs_every_n_steps=100, log_every_n_steps=50, accelerator=None, sync_batchnorm=False, precision=32, weights_summary='top', weights_save_path=None, num_sanity_val_steps=2, truncated_bptt_steps=None, profiler=None, benchmark=False, deterministic=False, reload_dataloaders_every_n_epochs=0, reload_dataloaders_every_epoch=False, replace_sampler_ddp=True, terminate_on_nan=False, prepare_data_per_node=True, plugins=None, amp_backend='native', amp_level='O2', distributed_backend=None, move_metrics_to_cpu=False, multiple_trainloader_mode='max_size_cycle', stochastic_weight_avg=False)}
[2025-01-20 11:52:19,934 INFO laia] Installed:
[2025-01-20 11:52:19,992 INFO laia.common.loader] Using checkpoint "syrnt_pylaia_train/epoch=82-last.ckpt"
[2025-01-20 11:52:20,015 INFO laia.common.loader] Loaded model syrnt_pylaia_train/model
Loading the LM will be faster if you build a binary file.
Reading syrnt_pylaia_train/language_model.arpa.gz
----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100
****************************************************************************************************
GPU available: True, used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]
syrnt_pylaia/images/test/line_31.png ܐܳܦ݂ ܐܰܢܢ̱ܬ݁ܬ݁ܝ ܒ݁ܶܝܬ݂ ܠܚܶܡ ܕ݁ܺܝܗܽܘܕ݂ܳܐ܃ ܠܳܐ ܗܘܰܝܬ݁ܝ ܒ݁ܨܺܝܪܳܐ ܒ݂ܡܰܠܟ݁ܶܐ̈ ܕ݂ܺܝܗܽܘܕ݂ܳܐ܂ ܡܶܢܶܟ݂ܝ ܓ݁ܓ݁ܶܝܪ ܢܶܦܽܘܩ ܡܰܠܟ݁ܳܐ܃ ܕ݁ܗܽܘ ܢܶܪܥܶܝܘܗ̱̱ܝ ܠܥܰܡܝ ܐܺܝܣܪܳܐܝܶܠܠ܀܀
syrnt_pylaia/images/test/line_217.png ܟ݁ܰܕ݂ ܗܘܳܐ ܕ݂ܶܝܢ ܪܰܡܫܳܐ܃ ܩܰܪܶܒ݂ܘ ܩܕ݂ܳܡܰܘܗ̱ܝ ܕ݁ܰܝܘܳܢܶܐ̈ ܣܰܓ݁ܓ݁ܺܝܶܐܐ̈܂ ܘܰܐܦ݁ܶܩ ܕ݁ܰܝܘܰܝܗܽܘܢ̈ ܒ݁ܡܶܠܬ݂ܳܐ܂ ܘܰܠܟ݂ܽܠܗܽܘܢ ܐܰܝܠܶܝܢ ܕ݁ܒܺܝܫܳܐܺܝܬ݂ ܥܒ݂ܺܝܕ݂ܺܝܢ ܗ̱ܗ̱ܘܰܘ ܐܰܣܺܝ ܐܶܢܽܘܢ܂܂
syrnt_pylaia/images/test/line_32.png ܗܳܝܕܶܝܢ ܗܶܪܳܘܕ݂ܶܣ ܡܰܛܫܝܳܐܺܝܬ݂ ܩܪܳܐ ܠܰܡܓ݂ܓ݂ܽܘܫܶܐ̈܃ ܘܺܝܠܶܦ݂ ܡܶܢܗܽܘܢ ܒ݁ܰܐܝܢܳܐ ܙܰܒ݂ܢܳܐ ܐܶܬ݂ܚܙܺܝ ܠܗܽܘܢܢ ܟ݁ܰܘܟ݁ܒ݂ܳܐ܂
syrnt_pylaia/images/test/line_152.png ܐܶܢ ܓ݁ܓ݁ܶܝܪ ܬ݁ܶܫܒ݁ܩܽܘܢ ܠܰܒ݂ܢܰܝܢܳܫܳܐ ܣܰܟ݂ܠܘܳܬ݂ܗܽܘܢ̈̈܃ ܢܶܫܒ݁ܽܘܩ ܐܳܦ݂ ܠܟ݂ܽܘܢ ܐܰܒ݂ܽܘܟ݂ܽܘܢ ܕ݁ܒܰܫܡܰܝܳܐ܂܂
syrnt_pylaia/images/test/line_8.png ܐܳܣܳܐ ܐܰܘܠܶܕ݂ ܠܝܳܗܽܘܫܳܦ݂ܳܛ܂܂ ܝܳܗܽܘܫܳܦ݂ܳܛ ܐܰܘܠܶܕ݂ ܠܝܽܘܪܳܡ܂ ܝܽܘܪܳܡ ܐܰܘܠܶܕ݂ ܠܥܽܘܙܺܝܳܐ܂
syrnt_pylaia/images/test/line_142.png ܐܰܝܟ݂ ܕ݁ܬܶܗܘܶܐ ܙܶܕ݂ܩܬ݂ܳܟ݂ ܒ݁݁ܟܶܣܝܳܐ܂ ܘܰܐܒ݂ܽܘܟ݂ ܕ݁ܚܳܙܶܐ ܒ݂ܟܶܣܝܳܐ܃ ܗܽܘ ܢܶܦ݂ܪܥܳܟ݂ ܒ݁ܓܓܶܠܝܳܐ܂܂
syrnt_pylaia/images/test/line_98.png ܛܽܘܒ݂ܰܝܗܽܘܽܘܢ ܠܰܐܝܠܶܝܢ ܕ݁ܰܕ݂ܟ݂ܶܝܢ ܒ݁݁ܠܶܒܗܽܘܢ܃ ܕ݁ܗܶܢܽܘܽܘܢܢ ܢܶܚܙܽܘܢܢ ܠܰܐܠܳܗܳܐ܀܀
syrnt_pylaia/images/test/line_121.png ܐܶܬ݂ܶܐܡܰܪ܂ ܕ݁ܡܰܢ ܕ݁ܫܳܪܶܐ ܐܰܢܢ̱ܬ݁ܬ݁ܬ݂ܶܗ܃ ܢܶܬ݁ܬ݁ܶܠܠ ܠܳܗ ܟ݁ܟ݁ܬ݂ܳܒ݂ܳܐ ܕ݂ܕ݂ܽܘܠܳܠܳܐ܂܂
syrnt_pylaia/images/test/line_336.png ܘܳܐܡܰܪ ܗ̱ܗ̱ܘܳܐ܃ ܘܳܝ ܠܶܟ݂ܝ ܟ݁ܳܘܪܰܙܺܝܢ܃ ܘܳܝ ܠܶܟ݂ܝ ܒ݁ܶܝܬ݂ ܨܰܝܳܕ݂ܳܐ܃ ܕ݁ܶܐܠܽܘ ܒ݂ܨܽܘܪ ܘܰܒܨܰܝܕܳܢ ܗܘܰܘ ܚܰܝܠܶܐ̈̈܂ ܐܰܝܠܶܝܢ ܕ݁ܰܗܘܰܘ ܒ݁ܒ݁ܟܶܝܢ܃ ܟ݁ܒ݂ܰܪ ܕ݁ܶܝܢ ܒ݁݁ܣܰܩܶܐ̈ ܘܰܒܩܶܛܛܡܳܐ ܬ݂ܳܒ݂ܘ܂܂
syrnt_pylaia/images/test/line_374.png ܐܰܘ ܐܰܝܟ݁ܰܢܳܐ ܐ̱ܢܳܫ ܡܶܫܟ݁ܰܚ ܕ݁ܢܶܥܽܘܠܠ ܠܒ݂ܶܝܬ݂ ܚܰܣܺܝܢܳܐ܂܂ ܘܡܳܐܢܰܘܗ̱̱ܝ̈̈ ܢܶܒ݁ܽܘܙ܃ ܐܶܠܳܐ ܐܶܢ ܠܽܘܩܕ݂ܰܡ ܢܶܐܣܪܺܝܘܗ̱̱ܝ ܠܚܰܣܺܝܢܳܐ܂ ܘܗܳܝܕܶܝܢ ܒ݁ܰܝܬ݁ܶܗ ܢܶܒ݁ܽܘܙ܀܀
syrnt_pylaia/images/test/line_284.png ܠܰܐܝܕ݂ܳܐ ܕ݂ܶܝܢ ܡܕ݂ܺܝܢ̱ܬܳܐ܂܂ ܐܰܘ ܩܪܺܝܬ݂ܳܐ ܕ݂ܥܳܐܠܺܝܢ ܐܢ̱ܬ݁ܬ݁ܽܘܢ ܠܳܗ܃ ܫܰܐܠܘ ܡܰܢܽܘ ܫܳܘܶܐ ܒ݂݁ܳܗ܃ ܘܬ݂ܰܡܳܢ ܗܘܰܘ܂܂ ܥܕ݂ܰܡܳܐ ܕ݂ܢܳܦ݂ܩܺܝܢ ܐܢ̱ܬ݁ܽܘܢ܀܀
syrnt_pylaia/images/test/line_278.png ܠܗܳܠܶܝܢ ܬ݁ܪ̈ܶܥܣܰܪ ܫܰܕ݁ܰܪ ܝܶܫܽܘܥ܃ ܘܦ݂ܰܩܶܕ݂ ܐܶܢܽܘܢ܂ ܘܶܐܡܰܪ܂ ܒ݁ܽܐܘܪܚܳܐ ܕ݂ܚܰܢܦ݂ܶܐ̈܂ ܠܳܐ ܬ݂ܺܐܙܽܠ̱ܘܢ܂ ܘܠܰܡܕ݂ܺܝܢ̱ܬܳܐ ܕ݂ܫܳܡܪ̈ܳܝܶܐ܂ ܠܳܐ ܬ݂ܶܥܠܽܘܢ܂܂
syrnt_pylaia/images/test/line_326.png ܐܰܡܺܝܢ ܐܳܡܰܪܢܳܐ ܠܟ݂ܽܘܢ܃ ܕ݁ܠܳܐ ܩܳܡ ܒ݁ܺܝܠܺܝܕ݂ܰܝ̈̈ ܢܶܫܶܐ̈ ܕ݂ܪܰܒ݁ ܡܶܢ ܝܽܘܚܰܢܳܢ ܡܰܥܡܕ݂ܳܢܳܐ܂ ܙܥܽܘܪܳܐ ܕ݂ܶܝܢ ܒ݁ܡܰܠܟ݁ܽܘܬ݂ ܫܡܰܝܳܐ܂ ܪܰܒ݂ ܗ̱ܗ̱ܽܘ ܡܶܢܶܗ܂܂
syrnt_pylaia/images/test/line_350.png ܐܰܘ ܠܳܐ ܩܪܰܝܬ݁ܬ݁ܽܘܢ ܒ݁ܽܐܘܪܳܝܬܳܐ܃ ܕ݁ܟܳܗܢܶܐ̈ ܒ݂ܗܰܝܟܠܳܐ܂ ܡܰܚܠܺܝܢ ܠܳܗ ܠܫܰܒ݁ܬ݂ܳܐ܂܂ ܘܰܕ݂ܠܳܐ ܥܶܕ݂ܠܳܝ ܐܶܢܽܘܢ܂܂
syrnt_pylaia/images/test/line_307.png ܠܳܐ ܬ݂ܶܣܒ݁ܪܽܘܢ ܕ݁ܶܐܬ݂ܺܝܬ݁ܬ݁ ܕ݁ܰܐܪܡܶܐ ܫܰܝܢܳܐ ܒ݂ܰܐܪܥܳܐ܂ ܠܳܐ ܐܶܬ݂ܺܝܬ݁ܬ݁ ܕ݁ܰܐܪܡܶܐ ܫܰܝܢܳܐ܂ ܐܶܠܳܐ ܚܰܪܒ݁ܳܐ܂
syrnt_pylaia/images/test/line_236.png ܘܰܣܠܶܩ ܠܶܐܠܦ݂ܳܐ܃ ܘܰܥܒ݂ܰܪ ܐܶܬ݂ܳܐ ܠܰܡܕ݂ܺܝܢ̱ܬ݁ܬ݁ܶܗ܀܀
syrnt_pylaia/images/test/line_409.png ܘܫܳܠܡܳܐ ܒ݂ܗܽܽܘܢ ܢܒ݂ܺܝܽܘܬ݂ܶܗ ܕ݁ܶܐܫܰܥܝܳܐ܂ ܕ݁ܶܐܡܰܪ܂ ܕ݁ܫܶܡܥܳܐ ܬ݂ܶܫܡܥܽܘܢ܂܂ ܘܠܳܐ ܬ݂݁ܶܣܬ݁ܬ݁ܰܟܠܽܘܢ܃ ܘܡܶܚܙܳܐ ܬ݂ܶܚܙܽܘܢ܂܂ ܘܠܳܐ ܬ݂ܶܕ݁ܥܽܘܢ܂܂
syrnt_pylaia/images/test/line_461.png ܗܺܝ ܕ݁ܶܝܢ ܡܶܛܽܠܠ ܕ݁ܡܰܠܦ݂ܳܐ ܗ̱ܗ̱ܘܳܬ݂ ܠܶܐܡܳܗ܂܂ ܐܶܡܪܰܬ݂܂܂ ܗܰܒ݂ ܠܺܝ ܗܳܪܟ݁ܳܐ ܒ݂ܦܺܝܢܟ݁ܳܐ܃ ܪܺܫܶܗ ܕ݁ܝܽܘܚܰܢܳܢ ܡܰܥܡܕ݂ܳܢܳܐ܂܂
syrnt_pylaia/images/test/line_518.png ܘܫܰܢܺܝ ܡܶܢ ܬ݁ܰܡܳܢ ܝܶܫܽܘܥ܃ ܘܶܐܬ݂ܳܐ ܥܰܠܠ ܓ݁ܓ݁ܶܢ̱ܒ݂ ܝܰܡܳܐ ܕ݂ܰܓ݂ܓ݂ܠܺܝܠܳܐ܀ ܘܰܣܠܶܩ ܠܛܽܘܪܳܐ܂ ܘܺܝܬ݂ܶܒ݂ ܬ݁ܰܡܳܢ܂܂
syrnt_pylaia/images/test/line_514.png ܗܺܝ ܕ݁ܶܝܢ ܐܶܬ݂ܳܬ݂ ܣܶܓܓ݂ܕ݁ܰܬ݂ ܠܶܗ܂ ܘܶܐܡܪܰܬ݂܂ ܡܳܪܝ܂܂ ܥܰܕ݁ܰܪܰܝܢܝ܂܂
Decoding: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:03<00:00,  1.14s/it]

real    0m8.626s
user    0m6.737s
sys     0m2.248s

binary arpa file

(pylaia-py3.10) incognito@DESKTOP-H1BS9PO:~/pylaia-train$ time pylaia-htr-decode-ctc --config syrnt_binary.yaml
[2025-01-20 11:52:33,551 INFO laia] Arguments: {'syms': 'syrnt_pylaia_train/syms.txt', 'img_list': 'img_list.txt', 'img_dirs': ['images/'], 'common': CommonArgs(seed=74565, train_path='', model_filename='syrnt_pylaia_train/model', experiment_dirname='syrnt_pylaia_train', monitor=<Monitor.va_cer: 'va_cer'>, checkpoint=None), 'data': DataArgs(batch_size=8, color_mode=<ColorMode.L: 'L'>, num_workers=None, reading_order=<ReadingOrder.RTL: 'RTL'>), 'decode': DecodeArgs(include_img_ids=True, separator=' ', join_string='', use_symbols=True, convert_spaces=True, input_space='<space>', output_space=' ', segmentation=None, temperature=1.0, print_line_confidence_scores=False, print_word_confidence_scores=False, use_language_model=True, language_model_path='syrnt_pylaia_train/language_model.binary', language_model_weight=1.5, tokens_path='syrnt_pylaia_train/tokens.txt', lexicon_path='syrnt_pylaia_train/lexicon.txt', unk_token='<unk>', blank_token='<ctc>'), 'trainer': TrainerArgs(gradient_clip_val=0.0, gradient_clip_algorithm='norm', process_position=0, num_nodes=1, num_processes=1, devices=None, gpus=1, auto_select_gpus=False, tpu_cores=None, ipus=None, progress_bar_refresh_rate=1, overfit_batches=0.0, track_grad_norm=-1, check_val_every_n_epoch=1, fast_dev_run=False, accumulate_grad_batches=1, max_epochs=None, min_epochs=None, max_steps=None, min_steps=None, max_time=None, limit_train_batches=1.0, limit_val_batches=1.0, limit_test_batches=1.0, limit_predict_batches=1.0, val_check_interval=1.0, flush_logs_every_n_steps=100, log_every_n_steps=50, accelerator=None, sync_batchnorm=False, precision=32, weights_summary='top', weights_save_path=None, num_sanity_val_steps=2, truncated_bptt_steps=None, profiler=None, benchmark=False, deterministic=False, reload_dataloaders_every_n_epochs=0, reload_dataloaders_every_epoch=False, replace_sampler_ddp=True, terminate_on_nan=False, prepare_data_per_node=True, plugins=None, amp_backend='native', amp_level='O2', distributed_backend=None, move_metrics_to_cpu=False, multiple_trainloader_mode='max_size_cycle', stochastic_weight_avg=False)}
[2025-01-20 11:52:33,838 INFO laia] Installed:
[2025-01-20 11:52:33,884 INFO laia.common.loader] Using checkpoint "syrnt_pylaia_train/epoch=82-last.ckpt"
[2025-01-20 11:52:33,908 INFO laia.common.loader] Loaded model syrnt_pylaia_train/model
GPU available: True, used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]
syrnt_pylaia/images/test/line_31.png ܐܳܦ݂ ܐܰܢܢ̱ܬ݁ܬ݁ܝ ܒ݁ܶܝܬ݂ ܠܚܶܡ ܕ݁ܺܝܗܽܘܕ݂ܳܐ܃ ܠܳܐ ܗܘܰܝܬ݁ܝ ܒ݁ܨܺܝܪܳܐ ܒ݂ܡܰܠܟ݁ܶܐ̈ ܕ݂ܺܝܗܽܘܕ݂ܳܐ܂ ܡܶܢܶܟ݂ܝ ܓ݁ܓ݁ܶܝܪ ܢܶܦܽܘܩ ܡܰܠܟ݁ܳܐ܃ ܕ݁ܗܽܘ ܢܶܪܥܶܝܘܗ̱̱ܝ ܠܥܰܡܝ ܐܺܝܣܪܳܐܝܶܠܠ܀܀
syrnt_pylaia/images/test/line_217.png ܟ݁ܰܕ݂ ܗܘܳܐ ܕ݂ܶܝܢ ܪܰܡܫܳܐ܃ ܩܰܪܶܒ݂ܘ ܩܕ݂ܳܡܰܘܗ̱ܝ ܕ݁ܰܝܘܳܢܶܐ̈ ܣܰܓ݁ܓ݁ܺܝܶܐܐ̈܂ ܘܰܐܦ݁ܶܩ ܕ݁ܰܝܘܰܝܗܽܘܢ̈ ܒ݁ܡܶܠܬ݂ܳܐ܂ ܘܰܠܟ݂ܽܠܗܽܘܢ ܐܰܝܠܶܝܢ ܕ݁ܒܺܝܫܳܐܺܝܬ݂ ܥܒ݂ܺܝܕ݂ܺܝܢ ܗ̱ܗ̱ܘܰܘ ܐܰܣܺܝ ܐܶܢܽܘܢ܂܂
syrnt_pylaia/images/test/line_32.png ܗܳܝܕܶܝܢ ܗܶܪܳܘܕ݂ܶܣ ܡܰܛܫܝܳܐܺܝܬ݂ ܩܪܳܐ ܠܰܡܓ݂ܓ݂ܽܘܫܶܐ̈܃ ܘܺܝܠܶܦ݂ ܡܶܢܗܽܘܢ ܒ݁ܰܐܝܢܳܐ ܙܰܒ݂ܢܳܐ ܐܶܬ݂ܚܙܺܝ ܠܗܽܘܢܢ ܟ݁ܰܘܟ݁ܒ݂ܳܐ܂
syrnt_pylaia/images/test/line_152.png ܐܶܢ ܓ݁ܓ݁ܶܝܪ ܬ݁ܶܫܒ݁ܩܽܘܢ ܠܰܒ݂ܢܰܝܢܳܫܳܐ ܣܰܟ݂ܠܘܳܬ݂ܗܽܘܢ̈̈܃ ܢܶܫܒ݁ܽܘܩ ܐܳܦ݂ ܠܟ݂ܽܘܢ ܐܰܒ݂ܽܘܟ݂ܽܘܢ ܕ݁ܒܰܫܡܰܝܳܐ܂܂
syrnt_pylaia/images/test/line_8.png ܐܳܣܳܐ ܐܰܘܠܶܕ݂ ܠܝܳܗܽܘܫܳܦ݂ܳܛ܂܂ ܝܳܗܽܘܫܳܦ݂ܳܛ ܐܰܘܠܶܕ݂ ܠܝܽܘܪܳܡ܂ ܝܽܘܪܳܡ ܐܰܘܠܶܕ݂ ܠܥܽܘܙܺܝܳܐ܂
syrnt_pylaia/images/test/line_142.png ܐܰܝܟ݂ ܕ݁ܬܶܗܘܶܐ ܙܶܕ݂ܩܬ݂ܳܟ݂ ܒ݁݁ܟܶܣܝܳܐ܂ ܘܰܐܒ݂ܽܘܟ݂ ܕ݁ܚܳܙܶܐ ܒ݂ܟܶܣܝܳܐ܃ ܗܽܘ ܢܶܦ݂ܪܥܳܟ݂ ܒ݁ܓܓܶܠܝܳܐ܂܂
syrnt_pylaia/images/test/line_98.png ܛܽܘܒ݂ܰܝܗܽܘܽܘܢ ܠܰܐܝܠܶܝܢ ܕ݁ܰܕ݂ܟ݂ܶܝܢ ܒ݁݁ܠܶܒܗܽܘܢ܃ ܕ݁ܗܶܢܽܘܽܘܢܢ ܢܶܚܙܽܘܢܢ ܠܰܐܠܳܗܳܐ܀܀
syrnt_pylaia/images/test/line_121.png ܐܶܬ݂ܶܐܡܰܪ܂ ܕ݁ܡܰܢ ܕ݁ܫܳܪܶܐ ܐܰܢܢ̱ܬ݁ܬ݁ܬ݂ܶܗ܃ ܢܶܬ݁ܬ݁ܶܠܠ ܠܳܗ ܟ݁ܟ݁ܬ݂ܳܒ݂ܳܐ ܕ݂ܕ݂ܽܘܠܳܠܳܐ܂܂
syrnt_pylaia/images/test/line_336.png ܘܳܐܡܰܪ ܗ̱ܗ̱ܘܳܐ܃ ܘܳܝ ܠܶܟ݂ܝ ܟ݁ܳܘܪܰܙܺܝܢ܃ ܘܳܝ ܠܶܟ݂ܝ ܒ݁ܶܝܬ݂ ܨܰܝܳܕ݂ܳܐ܃ ܕ݁ܶܐܠܽܘ ܒ݂ܨܽܘܪ ܘܰܒܨܰܝܕܳܢ ܗܘܰܘ ܚܰܝܠܶܐ̈̈܂ ܐܰܝܠܶܝܢ ܕ݁ܰܗܘܰܘ ܒ݁ܒ݁ܟܶܝܢ܃ ܟ݁ܒ݂ܰܪ ܕ݁ܶܝܢ ܒ݁݁ܣܰܩܶܐ̈ ܘܰܒܩܶܛܛܡܳܐ ܬ݂ܳܒ݂ܘ܂܂
syrnt_pylaia/images/test/line_374.png ܐܰܘ ܐܰܝܟ݁ܰܢܳܐ ܐ̱ܢܳܫ ܡܶܫܟ݁ܰܚ ܕ݁ܢܶܥܽܘܠܠ ܠܒ݂ܶܝܬ݂ ܚܰܣܺܝܢܳܐ܂܂ ܘܡܳܐܢܰܘܗ̱̱ܝ̈̈ ܢܶܒ݁ܽܘܙ܃ ܐܶܠܳܐ ܐܶܢ ܠܽܘܩܕ݂ܰܡ ܢܶܐܣܪܺܝܘܗ̱̱ܝ ܠܚܰܣܺܝܢܳܐ܂ ܘܗܳܝܕܶܝܢ ܒ݁ܰܝܬ݁ܶܗ ܢܶܒ݁ܽܘܙ܀܀
syrnt_pylaia/images/test/line_284.png ܠܰܐܝܕ݂ܳܐ ܕ݂ܶܝܢ ܡܕ݂ܺܝܢ̱ܬܳܐ܂܂ ܐܰܘ ܩܪܺܝܬ݂ܳܐ ܕ݂ܥܳܐܠܺܝܢ ܐܢ̱ܬ݁ܬ݁ܽܘܢ ܠܳܗ܃ ܫܰܐܠܘ ܡܰܢܽܘ ܫܳܘܶܐ ܒ݂݁ܳܗ܃ ܘܬ݂ܰܡܳܢ ܗܘܰܘ܂܂ ܥܕ݂ܰܡܳܐ ܕ݂ܢܳܦ݂ܩܺܝܢ ܐܢ̱ܬ݁ܽܘܢ܀܀
syrnt_pylaia/images/test/line_278.png ܠܗܳܠܶܝܢ ܬ݁ܪ̈ܶܥܣܰܪ ܫܰܕ݁ܰܪ ܝܶܫܽܘܥ܃ ܘܦ݂ܰܩܶܕ݂ ܐܶܢܽܘܢ܂ ܘܶܐܡܰܪ܂ ܒ݁ܽܐܘܪܚܳܐ ܕ݂ܚܰܢܦ݂ܶܐ̈܂ ܠܳܐ ܬ݂ܺܐܙܽܠ̱ܘܢ܂ ܘܠܰܡܕ݂ܺܝܢ̱ܬܳܐ ܕ݂ܫܳܡܪ̈ܳܝܶܐ܂ ܠܳܐ ܬ݂ܶܥܠܽܘܢ܂܂
syrnt_pylaia/images/test/line_326.png ܐܰܡܺܝܢ ܐܳܡܰܪܢܳܐ ܠܟ݂ܽܘܢ܃ ܕ݁ܠܳܐ ܩܳܡ ܒ݁ܺܝܠܺܝܕ݂ܰܝ̈̈ ܢܶܫܶܐ̈ ܕ݂ܪܰܒ݁ ܡܶܢ ܝܽܘܚܰܢܳܢ ܡܰܥܡܕ݂ܳܢܳܐ܂ ܙܥܽܘܪܳܐ ܕ݂ܶܝܢ ܒ݁ܡܰܠܟ݁ܽܘܬ݂ ܫܡܰܝܳܐ܂ ܪܰܒ݂ ܗ̱ܗ̱ܽܘ ܡܶܢܶܗ܂܂
syrnt_pylaia/images/test/line_350.png ܐܰܘ ܠܳܐ ܩܪܰܝܬ݁ܬ݁ܽܘܢ ܒ݁ܽܐܘܪܳܝܬܳܐ܃ ܕ݁ܟܳܗܢܶܐ̈ ܒ݂ܗܰܝܟܠܳܐ܂ ܡܰܚܠܺܝܢ ܠܳܗ ܠܫܰܒ݁ܬ݂ܳܐ܂܂ ܘܰܕ݂ܠܳܐ ܥܶܕ݂ܠܳܝ ܐܶܢܽܘܢ܂܂
syrnt_pylaia/images/test/line_307.png ܠܳܐ ܬ݂ܶܣܒ݁ܪܽܘܢ ܕ݁ܶܐܬ݂ܺܝܬ݁ܬ݁ ܕ݁ܰܐܪܡܶܐ ܫܰܝܢܳܐ ܒ݂ܰܐܪܥܳܐ܂ ܠܳܐ ܐܶܬ݂ܺܝܬ݁ܬ݁ ܕ݁ܰܐܪܡܶܐ ܫܰܝܢܳܐ܂ ܐܶܠܳܐ ܚܰܪܒ݁ܳܐ܂
syrnt_pylaia/images/test/line_236.png ܘܰܣܠܶܩ ܠܶܐܠܦ݂ܳܐ܃ ܘܰܥܒ݂ܰܪ ܐܶܬ݂ܳܐ ܠܰܡܕ݂ܺܝܢ̱ܬ݁ܬ݁ܶܗ܀܀
syrnt_pylaia/images/test/line_409.png ܘܫܳܠܡܳܐ ܒ݂ܗܽܽܘܢ ܢܒ݂ܺܝܽܘܬ݂ܶܗ ܕ݁ܶܐܫܰܥܝܳܐ܂ ܕ݁ܶܐܡܰܪ܂ ܕ݁ܫܶܡܥܳܐ ܬ݂ܶܫܡܥܽܘܢ܂܂ ܘܠܳܐ ܬ݂݁ܶܣܬ݁ܬ݁ܰܟܠܽܘܢ܃ ܘܡܶܚܙܳܐ ܬ݂ܶܚܙܽܘܢ܂܂ ܘܠܳܐ ܬ݂ܶܕ݁ܥܽܘܢ܂܂
syrnt_pylaia/images/test/line_461.png ܗܺܝ ܕ݁ܶܝܢ ܡܶܛܽܠܠ ܕ݁ܡܰܠܦ݂ܳܐ ܗ̱ܗ̱ܘܳܬ݂ ܠܶܐܡܳܗ܂܂ ܐܶܡܪܰܬ݂܂܂ ܗܰܒ݂ ܠܺܝ ܗܳܪܟ݁ܳܐ ܒ݂ܦܺܝܢܟ݁ܳܐ܃ ܪܺܫܶܗ ܕ݁ܝܽܘܚܰܢܳܢ ܡܰܥܡܕ݂ܳܢܳܐ܂܂
syrnt_pylaia/images/test/line_518.png ܘܫܰܢܺܝ ܡܶܢ ܬ݁ܰܡܳܢ ܝܶܫܽܘܥ܃ ܘܶܐܬ݂ܳܐ ܥܰܠܠ ܓ݁ܓ݁ܶܢ̱ܒ݂ ܝܰܡܳܐ ܕ݂ܰܓ݂ܓ݂ܠܺܝܠܳܐ܀ ܘܰܣܠܶܩ ܠܛܽܘܪܳܐ܂ ܘܺܝܬ݂ܶܒ݂ ܬ݁ܰܡܳܢ܂܂
syrnt_pylaia/images/test/line_514.png ܗܺܝ ܕ݁ܶܝܢ ܐܶܬ݂ܳܬ݂ ܣܶܓܓ݂ܕ݁ܰܬ݂ ܠܶܗ܂ ܘܶܐܡܪܰܬ݂܂ ܡܳܪܝ܂܂ ܥܰܕ݁ܰܪܰܝܢܝ܂܂
Decoding: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:02<00:00,  1.04it/s]

real    0m6.298s
user    0m6.374s
sys     0m2.044s

Sign up or log in to comment