본문 바로가기
라즈베리파이

2016. 04. 07 OCR on Rasberry Pi (Translation, 한글번역)

by YJHTPII 2022. 5. 24.
반응형

https://nate9389.tistory.com/111

 

2016. 04. 07 OCR on Rasberry Pi (Translation, 한글번역)

https://rdmilligan.wordpress.com/2014/11/21/ocr-on-raspberry-pi/ Tags CBeebies, Google, Mr. Men, Nickleodeon, OCR, OpenCV, optical character recognition, PyTesser, Python, Raspberry Pi, Tesseract, T..

nate9389.tistory.com

 

 

 

https://rdmilligan.wordpress.com/2014/11/21/ocr-on-raspberry-pi/

Tags

CBeebies, Google, Mr. Men, Nickleodeon, OCR, OpenCV, optical character recognition, PyTesser, Python, Raspberry Pi, Tesseract, Text To Speech, Webcam

His plans

"Monita, 내 친애하는 친구가 어린이 방송에서 좋은 아이디어를 얻었다! 캐릭터 이름을 보면 그 캐릭터의 유명 대사가 음성으로 들리는 게 하는 것 같은데 그녀가 뭔가 엄청난 아이디어가 있어서 유명 방송사와 연락하면······. 그녀가 말하길, '난 이것을 'Mr. Fruit'이라고 부를 거야!' ······.

"내 Raspberry Pi의 Python 코드는 webcam으로부터 이미지를 받을 것이다. 그 뒤 즉석에서 이미지 안에 있는 글자를 문자로 변환한다. 문자를 판독하기 위해 내 Pi는 OCR(optical character recognition) 소프트웨어를 사용할 것이다. 성공한다면, 돈을 많이 벌겠지······.

 

"좋아, 우선 내 Raspberry Pi에 작동시킬 만한 OCR 소프트웨어를 찾아야겠다. Tesseract가 이미 잘 알려져 있고 Google이 후원하고 있으니까 좋은 선택이 될 것 같다. 이제 이것을 Pi에 설치하자.

1
sudo apt-get install tesseract-ocr

 

"그 다음, Tesseract를 쓰려면 파이썬의 작업환경이 필요하므로 PyTesser가 필요하다. 나는 단순히  간단하게 zip 파일을 다운받아서 같은 디렉토리 안에 내가 짠 코드에 삽입했다.

"다음과 같은 메인 프로그램을 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import cv2
from PIL import Image
from pytesser import *
from speech import Speech
from time import sleep
 
speech = Speech()
 
IMAGE_FILE = 'mister_fruits.jpg'
 
# loop forever
while True:
 
    # save image from webcam
    img = cv2.VideoCapture(0).read()[1]
    cv2.imwrite(IMAGE_FILE, img)
 
    # load image
    img = Image.open(IMAGE_FILE)
 
    # detect words in image
    words = image_to_string(img).strip()
    print words
 
    # annouce the arrival of Mr Puce!
    if(words == 'Mr Puce'):
        speech.text_to_speech("Watch out, here comes Mr Puce")
 
    sleep(5)

 

"상당히 단도직입적이다. 루프 안에서 우리는 webcam으로부터 이미지를 받고, OpenCV로 이를 파일로 저장한다. 그 다음에 PyTesser의 image_to_string 방법에 적합한 형태로 이미지를 불러온다. 만약 Tesseract OCR이 제대로 작동하면, 우리는 이미지 파일에 쓰여 있는 캐릭터의 이름을 알 수 있을 것이다. Google의 Text To Speech service가  "조심해, Mr Puce가 지나간다!"와 같은 음성이 들릴 것이다.  

"이제 실험을 해볼까. 내가 코드를 실행하면 이 코드는 webcam의 이미지를 파일로 바꿀 것이다:

"그런데 정말로 OCR 소프트웨어가 사진 속 캐릭터의 이름을 인식했을까? 여기 내 프로그램의 출력결과가 있다:

"서두르자! 사진 속 단어가 Tesseract 엔진에 의해 성공적으로 텍스트로 바뀌었고, 저 못된 토마토 친구 Mr Puce의 유명 대사가 Pi와 연결된 스피커를 통해 음성으로 전환됐다. 와우, 이건 많은 얘들이 좋아할 거야! 나는 기대에 차서 그녀에게 물어봤다. 그래서 누굴 먼저 할 거야? The CBeebies channel? 아니면 Nickelodean? 그녀의 눈이 동그랗게 커져서 말했다. 자기야, 이건 그냥 마을 축제를 위한 거였어. 별 거 아니었어, 진짜로. 저런. 난 곧장 Raspberry Pi를 박스에 넣어 놓고 webcam을 방 구석으로 던졌다.

P.S.

"여기 Google의 Text To Speech 서비스를 쓸 수 있게 선언된 Speech 클래스가 있다. 

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from subprocess import PIPE, call
import urllib
  
class Speech(object):
  
    # converts text to speech
    def text_to_speech(self, text):
        try:
            # truncate text as google only allows 100 chars
            text = text[:100]
  
            # encode the text
            query = urllib.quote_plus(text)
  
            # build endpoint
            endpoint = "http://translate.google.com/translate_tts?tl=en&q=" + query
  
            # debug
            print(endpoint)
  
            # get google to translate and mplayer to play
            call(["mplayer", endpoint], shell=False, stdout=PIPE, stderr=PIPE)
        except:
            print ("Error translating text")
 

 

반응형

댓글