Skip to content

Kishlay-notabot/dcda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

┬а
┬а
┬а
┬а
┬а
┬а
┬а
┬а
┬а
┬а
┬а

Repository files navigation

DCDA

Devanagari Character Dataset Automation


рд╣рд┐рдВрджреА рд╕рдВрд╕реНрдХрд░рдг рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

EDIT: Website is now live! visit dcda.io

2025 edit: started working on this again: dcdaML

What?

This project is made for automating the process (to an extent) of making curated handwritten datasets for any language. The project focuses on Devanagari but it can be used universally with all the languages compatible with the Tesseract OCR engine.

This project is like a self improvization closed loop for the existing OCR technology for Devanagari, by inducing minimal human intervention in the tedious process of dataset creation.

Why?

This idea originated due to the absence of large datasets on the internet available for the devanagari script. Because it is the least explored domain in terms of OCR technology [Refer to this research paper]

Major role of the existing research paper

Before starting this project, I conducted thorough research on existing handwritten character datasets for the Devanagari script. And the biggest Dataset I found was the Devanagari Handwritten Character Dataset. Upon reading the paper thoroughly and contacting the authors, I was given very valuable suggestions from Professor Prashnna, who was the one of the authors of the currently largest available dataset which contains 92,000 images. The paper was published in 2015, and that time, the authors collected the data and they had to manually process and crop out the individual characters from the recieved data.

My project has eliminated all the physical human intervention and narrowed it down to a remotely accesible webpage, which takes minimal human input in form of just some simple clicks (literally just 2-3 clicks), which help in the concatenation of the dataset.

This is my contribution to promote the digitization of my language Hindi and the Devanagari script for democratization and better usage of OCR.

How?

The depicted app illustration below does not align with our current conceptualization, i.e. the illustration of the web app's idea is outdated. Why? Read below,

We are currently planning to release the site as a tool which will assist in generation of word level statistics and data but not like symbol level manipulation / collection as illustrated below. It can be an addition to the project later on but the current MVP we are planning to release is just a tool which asks humans to verify Tesseract engine's output. The reason of the temporary delay of the symbol level dataset creation web app is because we aren't sure about the usability of the dataset produced with current technology, because the dataset generated will not be uniform, in terms of image resolution, size or DPI.

The final project turned out to be drastically different than what it was planned like. This repository contains a pipeline of multiple programs which take input images of pages containing handwritten Hindi text, and perform the following processes in the order:

  1. Pre processing the input images (Grayscale and Binarization if needed)
  2. Running word level OCR on them using parallel processing power of 7 workers together and exporting the bounding box data of all the words detected into a json file. (One image can contain thousands of words!)
  3. A program which uses the exported json file, and the input images and crops out all the words mentioned in the json file into individual images. (Fun Fact: More than 100 thousand images were cropped out from the first batch of nearly 140-160 images, with a lot of false detections, which were handled out in the next versions of the code.)
  4. The fourth step is the website where users can just visit and crop out characters one at a time using the embedded Cropper.js instance, and labelling them using the virtual keyboard and submitting them to the database. (Visualization of the website below)

Proposed Webpage

We are actively ideating and working on how this project and the corresponding research paper comes out, and how is it presented, many ideas are getting discussed, approved or scraped. There are lot of ways in which we can proceed with a strong result of the project. Updates will be added soon.

Collaborating with

Dependencies

For the JS files, Use node.js to run the files and install canvas and tesseract.js packages via npm

The ideation process of this project alone was months long and many versions were created and scraped, I would not cover those in this readme because it already is very long :'-)

  • Legacy version of tessdata is very inaccurate

  • Using a single worker to recognize a sample batch of images took 4 minutes and 30 seconds, while using the same sample batch and using 7 workers parallely completed the task in 1 minutes and 10 seconds, which is nearly 75% increase in speed. But also pointing out from the documentation that the individual recognition speed does not change with multiple workers, its just that the processes get executed parallelly.


Also read ai.md

Issues faced

#874 #877 #884

React.js

#6559

Cropper.js

#1138

Pull requests and active discussions:

#883
#1140 Added example for V2 of Cropper.js
#878 Added a pull request for adding complex examples of bbox data manipulation and output generation.

Older additions to readme:

Comparison of the confidence values between both versions:

Sample image:

sample img

Legacy Model

Legacy Model

4.0/4.1 Model

Newer Model Average confidence of Legacy model is : 79.5
Average confidence of 4.0/4.1 model is : 89.83

Credits:


Hindi translation:

рджреЗрд╡рдирд╛рдЧрд░реА рдЕрдХреНрд╖рд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рддреАрдХрд░рдг

рдХреНрдпрд╛?

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрд┐рдд рд╣реИ рдФрд░ рд╣рд╕реНрддрд▓реЗрдЦрд┐рдд рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ (рдПрдХ рд╣рдж рддрдХ) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЗрд╡рдирд╛рдЧрд░реА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ Tesseract OCR рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореМрдЬреВрджрд╛ OCR рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡-рд╕реБрдзрд╛рд░рд┐рдд рдмрдВрдж рд▓реВрдк рдХреА рддрд░рд╣ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдХреА рдердХрд╛рдирдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╛рдирд╡ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЛ рдиреНрдпреВрдирддрдо рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпреЛрдВ?

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреА рдЙрддреНрдкрддреНрддрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рджреЗрд╡рдирд╛рдЧрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рдереАред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ OCR рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рд╕рдмрд╕реЗ рдХрдо рдЕрдиреНрд╡реЗрд╖рд┐рдд рдбреЛрдореЗрди рд╣реИ рдЗрд╕ рд░рд┐рд╕рд░реНрдЪ рдкреЗрдкрд░ рдХреЛ рджреЗрдЦреЗрдВ

рдореМрдЬреВрджрд╛ рд░рд┐рд╕рд░реНрдЪ рдкреЗрдкрд░ рдХреА рдкреНрд░рдореБрдЦ рднреВрдорд┐рдХрд╛

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рджреЗрд╡рдирд╛рдЧрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╣рд╕реНрддрд▓реЗрдЦрд┐рдд рд╡рд░реНрдг рдбреЗрдЯрд╛рд╕реЗрдЯреЛрдВ рдкрд░ рд╡реНрдпрд╛рдкрдХ рдЕрдиреБрд╕рдВрдзрд╛рди рдХрд┐рдпрд╛ред рдФрд░ рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рджреЗрд╡рдирд╛рдЧрд░реА рд╣рд╕реНрддрд▓реЗрдЦрд┐рдд рд╡рд░реНрдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд╛рдпрд╛ред рдЙрд╕реЗ рдзреНрдпрд╛рдирдкреВрд░реНрд╡рдХ рдкрдврд╝рдиреЗ рдФрд░ рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЙрд╕ рд╕рдордп рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдкреНрд░рд╢реНрдирд╛ рд╕реЗ рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╕реБрдЭрд╛рд╡ рдорд┐рд▓рд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдПрдХ рд▓реЗрдЦрдХ рдереЗ рдЬрд┐рд╕рдореЗрдВ 92,000 рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВред

рдкреЗрдкрд░ 2015 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛, рдФрд░ рдЙрд╕ рд╕рдордп рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд░реЙрдк рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдмрд╣реБрдд рд╣реА рдХрдард┐рди рдХрд╛рд░реНрдп рд╣реИ

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рд╕рднреА рднреМрддрд┐рдХ рдорд╛рдирд╡реАрдп рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рджреВрд░ рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╡реЗрдмрдкреЗрдЬ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╛рдзрд╛рд░рдг рдХреНрд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдиреНрдпреВрдирддрдо рдорд╛рдирд╡ рдЗрдирдкреБрдЯ рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреИрд╕реЗ?

рдЕрдВрддрд┐рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╣ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдмрдирд╛ рд╣реИ рдЬреЛ рдпрд╣ рдпреЛрдЬрдирд╛ рдереАред рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реИ рдЬреЛ рд╣рд╕реНрддрд▓реЗрдЦрд┐рдд рд╣рд┐рдВрджреА рдкрд╛рда рд╡рд╛рд▓реА рдкреГрд╖реНрдареЛрдВ рдХреА рдЗрдирдкреБрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдХреНрд░рдорд╢: рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:

  1. рдЗрдирдкреБрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдкреВрд░реНрд╡ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг (рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдФрд░ рдмрд╛рдЗрдирд░рд╛рдИрдЬреЗрд╢рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)
  2. рдЙрди рдкрд░ рд╕рд╛рдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХрд╛ Parallel processing рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдб рд╕реНрддрд░ рдХрд╛ OCR рдЪрд▓рд╛рдирд╛ рдФрд░ рд╕рднреА рдкрд╣рдЪрд╛рдирд┐рдд рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ред (рдПрдХ рдЫрд╡рд┐ рд╣рдЬрд╛рд░реЛрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ!)
  3. рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП json рдлрд╝рд╛рдЗрд▓, рдФрд░ рдЗрдирдкреБрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдЬреЛ рдЬреНрдпрд╕рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ, рдХреЛ рдХреНрд░реЙрдк рдХрд░рддрд╛ рд╣реИред
  4. рдЪреМрдерд╛ рдХрджрдо рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдЕрдХреНрд╖рд░ рдХреЛ рдХреНрд░реЙрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдореНрдмреЗрдбреЗрдб рдХреНрд░реЙрдкрд░.js рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рджреГрд╢реНрдпрди рдиреАрдЪреЗ)

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡реЗрдмрдкреЗрдЬ

рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рднрд╛рдЧ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдЧрд╛ред @simplycode рдмреИрдХрдПрдВрдб рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдХреБрдЫ рд╕реМрдереА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рдж рд╕рд╛рд░реНрдердХ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рдЕрдХреЗрд▓реЗ рдорд╣реАрдиреЗ рддрдХ рдХрд╛ рд╕рдордп рд▓рд┐рдпрд╛ рдФрд░ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдП рдФрд░ рдХреВрдж рдЧрдП, рдореИрдВ рдЗрд╕ рд░реЗрдбрдореА рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ :'-)

рдкрд░рд┐рдгрд╛рдо, рдЦреЛрдЬ, рд╕рдорд╕реНрдпрд╛рдПрдБ рдФрд░ рдкреНрд░рд╛рдкреНрддрд┐рдпрд╛рдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди:

рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛?

  • Pytesseract рдХрд╛ рдкрд░рд┐рдЪрдп

  • React.js [рдирдИ рдХреМрд╢рд▓!]

  • Tesseract.js [рдирдИ рдХреМрд╢рд▓!]

  • Cropper.js [рдирдИ рдХреМрд╢рд▓!]

  • рдореМрдЬреВрджрд╛ OCR рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░реНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рдЬреИрд╕реЗ gImageReader, EasyOCR рдЖрджрд┐ред (рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдореМрдЬреВрджрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

  • tessdata рдХрд╛ рд▓реЗрдЧреЗрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдмрд╣реБрдд рдЕрдХреНрд╖рд░рд╢рд╛рд╕реНрддреНрд░ рдореЗрдВ рдЕрд╢реБрджреНрдз рд╣реИ

  • рдПрдХрд▓ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реИрдореНрдкрд▓ рдмреИрдЪ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ 4 рдорд┐рдирдЯ рдФрд░ 30 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдЬрдмрдХрд┐ рдПрдХ рд╣реА рд╕реИрдореНрдкрд▓ рдмреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рд╕рд╛рдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдХрд╛рд░реНрдп рдХреЛ 1 рдорд┐рдирдЯ рдФрд░ 10 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рдЬреЛ рд▓рдЧрднрдЧ 75% рдХреА рд╡реГрджреНрдзрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдПрдХрд▓ рдкрд╣рдЪрд╛рди рдХреА рдЧрддрд┐ рдХрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдкрд╛рд░реНрд▓рд▓ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВред


About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published