๐Ÿ“š Study/AI

EasyOCR ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ์…‹์—์„œ finetuning ํ•˜๊ธฐ (1) - EasyOCR ๋ชจ๋ธ ๊ตฌ์กฐ

์œฐ๊ฐฑ 2025. 5. 29. 16:02

https://github.com/JaidedAI/EasyOCR

 

GitHub - JaidedAI/EasyOCR: Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chines

Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc. - JaidedAI/EasyOCR

github.com

 

EasyOCR์ด๋ž€?

EasyOCR์€ PyTorch ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค OCR(Optical Character Recognition) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ,

์ „ ์„ธ๊ณ„ 80๊ฐœ ์ด์ƒ์˜ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ํ•œ ์ค„๋กœ ์ด๋ฏธ์ง€ ์† ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ง๊ด€์ ์ธ OCR ๋„๊ตฌ์ด๋‹ค.

 


ํŒŒ์ดํ”„๋ผ์ธ

 

์œ„ ๊ทธ๋ฆผ์€ EasyOCR์˜ end-to-end ํŒŒ์ดํ”„๋ผ์ธ์„ ๋„์‹ํ™”ํ•œ ๊ฒƒ์ด๋‹ค.

1๏ธโƒฃ Pre-Process
: ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์กฐ์ •, ์ƒ‰์ƒ ์ •๊ทœํ™” ๋“ฑ ๊ธฐ๋ณธ ์ „์ฒ˜๋ฆฌ ์ˆ˜ํ–‰

2๏ธโƒฃ Detection (CRAFT)
: ํ…์ŠคํŠธ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€๋ฅผ ์ฐพ๋Š” ๋‹จ๊ณ„
: ํƒ์ง€๋œ ์˜์—ญ์€ bounding box๋กœ ์ถœ๋ ฅ๋˜์–ด recognition ๋‹จ๊ณ„๋กœ ์ „๋‹ฌ

3๏ธโƒฃ Mid-Process
: Bounding Box๋ฅผ ๊ธฐ์ค€์œผ๋กœ crop
: Recognition ๋ชจ๋ธ์— ๋„ฃ๊ธฐ ์œ„ํ•œ ์ •๋ ฌ๊ณผ ๋ฆฌ์‚ฌ์ด์ง• ์ˆ˜ํ–‰

4๏ธโƒฃ Recognition (CNN + LSTM + CTC)
: cropped ์ด๋ฏธ์ง€ → ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
: CNN > ์ด๋ฏธ์ง€ ํŠน์ง• ์ถ”์ถœ, BiLSTM > ์‹œํ€€์Šค ๋ชจ๋ธ๋ง, CTC > Connectionist Temporal Classification loss๋กœ ํ•™์Šต

5๏ธโƒฃ Decoder (Greedy or Beam Search)
: ์˜ˆ์ธก๋œ ์‹œํ€€์Šค๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

6๏ธโƒฃ Post-Process
: ์˜ˆ์ธก ๊ฒฐ๊ณผ ์ •๋ ฌํ•˜๊ณ  Confidence Threshold ์ ์šฉ

 

EasyOCR์—์„œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅํ•œ ์˜์—ญ์€ ๊ทธ๋ฆผ์—์„œ ํ‘œ์‹œ๋œ ํšŒ์ƒ‰ ๋ถ€๋ถ„์œผ๋กœ, ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ์„ค๋ช…
Detection ๊ฐ€๋Šฅ (CRAFT ์™ธ ๋ชจ๋ธ ์‚ฌ์šฉ) ํŠน์ •ํ•œ ๋ฐฐ๊ฒฝ์ด๋‚˜ ํ…์ŠคํŠธ ์œ„์น˜์— ๋งž๊ฒŒ ํŠœ๋‹ ๊ฐ€๋Šฅ
Recognition ๊ฐ€๋Šฅ (Fine-tuning or custom ํ•™์Šต) ๋Œ€๋ถ€๋ถ„์˜ ์ปค์Šคํ…€ OCR ์ž‘์—…์—์„œ๋Š” ์ด ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •
Decoder ๊ฐ€๋Šฅ Greedy, BeamSearch, Attention ๊ธฐ๋ฐ˜ ๋””์ฝ”๋” ๋“ฑ ๊ต์ฒด ๊ฐ€๋Šฅ

 


 

๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š”, ์ผ๋‹จ Recognition ๋ถ€๋ถ„๋งŒ finetuningํ•ด์„œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆด ์ƒ๊ฐ์ด๋‹ค.

+ ์ฐธ๊ณ ๋กœ ์›๋ž˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค๊ณ  ์•Œ๋ ค์ง„ paddleocr finetuning์„ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋ฒ„์ „์— ๋”ฐ๋ผ ์ฝ”๋“œ๊ฐ€ ์•ˆ ๋Œ์•„๊ฐ€๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ์ƒ๊ฒผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  document๋„ ์ค‘๊ตญ์–ด ์œ„์ฃผ๋กœ ๋˜์–ด ์žˆ์–ด์„œ ํฌ๊ธฐํ–ˆ๋‹ค. ์ต์ˆ™ํ•œ tool์ธ pytorch๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” easyocr์ด ๋” ์ ํ•ฉํ–ˆ๋‹ค.