๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿง‘‍๐Ÿ’ป ์ฝ”๋”ฉ/Flutter

[Flutter ์•ฑ ๊ฐœ๋ฐœ] Account Number Scanner

728x90

๊ฐœ๋ฐœ ๋™๊ธฐ

์–ผ๋งˆ ์ „์— ์นœ๊ตฌ์™€ ๋ฐฅ์„ ๋จน์œผ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์นœ๊ตฌ๊ฐ€ ๊ณ„์ขŒ์ด์ฒด๋ฅผ ํ–ˆ๋Š”๋ฐ ์ผ์ผ์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒŒ ๊ท€์ฐฎ๋‹ค๊ณ  ์‚ฌ์ง„ ์ฐ์œผ๋ฉด ๋ฐ”๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์–ดํ”Œ ๊ฐ™์€ ๊ฒŒ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์–˜๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์–˜๊ธฐ๋ฅผ ๋“ฃ๊ณ  ์‚˜์ด ๊ฝ‚ํ˜€์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํˆด์€ ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋…„์— ํ”Œ๋Ÿฌํ„ฐ ์ฑ…์„ ์‚ฌ์„œ ๊ณต๋ถ€ํ–ˆ์–ด ๊ธฐ๋ณธ์ ์ธ ๊ฑด ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๊ฐœ๋ฐœ ๊ณผ์ •

์•ฑ ์‹คํ–‰ -> ์นด๋ฉ”๋ผ ์‹คํ–‰ -> ์‚ฌ์ง„ ์ฐ๊ธฐ -> ์‚ฌ์ง„์—์„œ ํ…์ŠคํŠธ ์ถ”์ถœ -> ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ -> ์€ํ–‰์–ดํ”Œ ์ผœ๊ธฐ

์ด๊ฑด ์ œ๊ฐ€ ๊ธฐํšํ•œ ์–ดํ”Œ์˜ ์ž‘๋™ ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ณ„์ขŒ๋ฒˆํ˜ธ์™€ ์€ํ–‰ ์ด๋ฆ„์ด ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋˜๋ฉด ์€ํ–‰ ์–ดํ”Œ์„ ์ผฐ์„ ๋•Œ ํ•ด๋‹น ๊ณ„์ขŒ๋กœ ์†ก๊ธˆํ•˜๊ธฐ ๋ฒ„ํŠผ์ด ๋œจ๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋จผ์ € ์นด๋ฉ”๋ผ๋ฅผ ์ผœ์„œ ์‚ฌ์ง„์„ ์ฐ๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด๊ธฐ ์œ„ํ•ด ImagePicker package๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋‹ค์Œ์œผ๋กœ ์ด ์–ดํ”Œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ์‚ฌ์ง„์—์„œ ํ…์ŠคํŠธ ์ถ”์ถœ์„ ํ•˜๊ธฐ ์œ„ํ•ด OCR.space๋ผ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์‚ฌ์ดํŠธ์—์„œ API Key๋ฅผ ์ œ๊ณต๋ฐ›๊ณ  ์•ž์„œ ์ฐ์€ ์‚ฌ์ง„์„ https://api.ocr.space/parse/image ์ด ์ฃผ์†Œ๋กœ ๋ณด๋‚ด๋ฉด ๊ฒฐ๊ด๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋”๊ตฐ์š”. ์ž‘๋™์— ์„ฑ๊ณตํ–ˆ์ง€๋งŒ, ์บก์ฒ˜๋ณธ ๊ฐ™์€ ๊น”๋”ํ•œ ์‚ฌ์ง„์€ ์ธ์‹ํ•˜๋Š” ๋ฐ ๋ฐ˜ํ•ด ๊ทธ๋ƒฅ ์นด๋ฉ”๋ผ๋กœ ์ฐ์€ ์‚ฌ์ง„์€ ์ œ๋Œ€๋กœ ์ธ์‹์„ ๋ชป ํ•˜๋”๊ตฐ์š”.

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ocr ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์•„๋ดค๋Š”๋ฐ ML Vision์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ ํžŒ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐพ์•„์„œ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ด€๋ฌธ์ด์—ˆ๊ณ  ๊ทธ ์ดํ›„๋Š” ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ ์ฝ”๋“œ๋ฅผ ์งœ์ฃผ๊ณ  URL_Launcher package๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • ์–ดํ”Œ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์€ํ–‰ ์–ดํ”Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ๊ณ„ํš์ด์ง€๋งŒ ์šฐ์„ ์€ ์ œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์นด์นด์˜ค๋ฑ…ํฌ๋กœ ์—ฐ๊ฒฐ๋˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ต์‹ฌ ์ฝ”๋“œ ์ผ๋ถ€๋ถ„

์–ดํ”Œ ์‹œ์—ฐ ์‚ฌ์ง„

์‹œ์—ฐ ์˜์ƒ์„ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ, ํ˜น์‹œ๋ผ๋„ ๊ณ„์ขŒ๊ฐ€ ์œ ์ถœ๋ ๊นŒ ๋ด ์‚ฌ์ง„์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

 

ํ›„๊ธฐ

flutter ์ฑ…์— ๋‚˜์˜จ ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ ํ•ด๋ณธ ๊ฒƒ ์ด์™ธ๋กœ ์ œ๊ฐ€ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์‹ถ์€ ์–ดํ”Œ์„ ๋งŒ๋“  ๊ฒƒ์€ ์ฒ˜์Œ์ธ๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ์—ˆ๊ณ  ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด ๋‚ด๋‹ˆ ์„ฑ์ทจ๊ฐ์ด ์ปธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•ž์œผ๋กœ๋„ ์‹œ๊ฐ„์ด ๋‚  ๋•Œ ์กฐ๊ธˆ์”ฉ ๊ณต๋ถ€ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

์œ„ ์–ดํ”Œ ์‹œ์—ฐ ์‚ฌ์ง„์—์„œ ๋ณด์…จ๋‹ค์‹œํ”ผ ์•„์ง ํ•œ๊ธ€ ํ…์ŠคํŠธ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์ด๊ณ  ์ด ๋•Œ๋ฌธ์— ์ง์ ‘ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•˜๊ณ  ๋ณด๋‚ผ ์€ํ–‰์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ์€ํ–‰ ์–ดํ”Œ๋กœ๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์šฐ์„  ์–ดํ”Œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•ด๋‘๊ณ  ML Vision์ด ํ•œ๊ธ€์„ ์ง€์›ํ•˜๋Š”์ง€ ์ฐพ์•„๋ณด๊ธฐ๋„ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์€ํ–‰ ์–ดํ”Œ ์—ฐ๊ฒฐ๋„ ๊ณ„ํšํ•˜๋Š” ์™€์ค‘์— ํ† ์Šค์— ์ด๋ฏธ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ์–˜๊ธฐ๋ฅผ ๋“ค์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค... ๊ทธ๋ž˜์„œ ์•ฝ๊ฐ„์˜ ํ˜„ํƒ€๊ฐ€ ์™”์ง€๋งŒ ์ผ๋‹จ ๋งŒ๋“  ๊ฒƒ์ด ์žˆ์œผ๋‹ˆ ์ •๋ฆฌ๋„ ํ•ด๋‘˜ ๊ฒธ ๊ธ€์„ ์”๋‹ˆ๋‹ค.

์•„์‰ฝ๊ธด ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ๊ณ„ํšํ•œ ์–ดํ”Œ์€ ํ† ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ € ์™„์„ฑ์€ ํ•ด๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™„์„ฑํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๋ธ”๋กœ๊ทธ๋‚˜ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์— ์˜ฌ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ์ž๋ฃŒ

์นด๋ฉ”๋ผ๊ด€๋ จ

๋ธ”๋กœ๊ทธ : https://fre2-dom.tistory.com/346

๊ณต์‹๋ฌธ์„œ : https://docs.flutter.dev/cookbook/plugins/picture-using-camera

์ด๋ฏธ์ง€์—์„œ ํ…์ŠคํŠธ ์ถ”์ถœ

OCR.space ์ด์šฉ : https://medium.com/@nsivaramdav/create-a-image-to-text-recognition-app-with-flutter-d135b682ba4d

ML Vision  ์ด์šฉ : https://365waytobe-pro-grammer.tistory.com/81

 

728x90