https://nate9389.tistory.com/111
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
# 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")
|
'라즈베리파이' 카테고리의 다른 글
Raspberry Pi 4에 Windows 11을 설치하는 방법 (0) | 2023.07.13 |
---|---|
Installation of Raspberry PiCar-A Program with OpenCV FPV Function (0) | 2022.07.21 |
라즈베리파이 프로그램 자동실행 (0) | 2022.05.23 |
step-by-step instructions for setting up AVS on a Raspberry Pi (0) | 2022.05.22 |
Five Ways To Run a Program On Your Raspberry Pi At Startup (0) | 2022.05.22 |
댓글