한글 자막용 OCR 공개

자막제작자포럼

한글 자막용 OCR 공개

2 darong 16 1534 0

안녕하세요.

제가 개발한 자막용 OCR를 오픈소스로 공개했습니다.

(여기 글 참고 https://cineaste.co.kr/bbs/board.php?bo_table=psd_capmakef&wr_id=27926)


소스는 아래 링크에 있는 Github로 가시면 다운로드 받을 수 있습니다.

설치 및 사용법은 Github에 있으니 거길 참고해 주세요.

(소스뿐만 아니라 학습된 모델도 같이 다운로드 받아야 합니다.)


소스에서 사용한 다양한 라이브러리와 버전 문제 때문에 설치에 어려움을 겪을 수 있습니다.


Facebook Twitter GooglePlus KakaoStory NaverBand 신고
16 Comments
40 백마  
감사합니다^^
17 외지인  
tensorflow 2.0이면 안되는건가요?
2 darong  
학습한 모델이 1.11 버전이라 2.0 버전과 호환되지 않습니다.
1.13 이하 버전의 tensorflow를 설치해야 합니다.
17 외지인  
네 2.0으로 설치했더니 명령어도 다 바뀌고 해서 에러만 계속 뿜어대네요 ㅋㅋ 다시 1.13버전으로 설치 해 봅니다
17 외지인  
인식률은 구글 비전api 와 비교해서 큰 차이가 나지 않는거 같습니다 다만 gpu 사용을 어떻게 하는지 몰라 그냥 cpu사용으로 해봤는데 시간이 너무 오래 걸리네요
120여줄의 10분 남짓한 동영상 변환하는데 30분 가까이 걸렸습니다 아마도 cpu사용해서 그런거 같습니다 진행중에 컴파일 제대로 하면 속도 더 빨라질 수 있다는? 워링도 뜨네요'Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2' 그나마 느린 cpu의 성능도 제대로 사용을 못한 거 같습니다
아마도 gpu쪽으로 하면 꽤 빨라질거 같기도 하지만 사용법을 몰라 안타깝네요 ㅋㅋ
프로그램 제작 수고하셨습니다 더군다나 오픈소스라니  굿입니다!
2 darong  
NVidia GPU를 가지고 있고 Cuda 9.x 버전과 9.x버전용 cudnn를 설치한 다음 tensorflow-gpu를 이용하면 속도가 훨씬 빠릅니다.
tensorflow-gpu나 cudnn 설치 등과 같은 검색어로 검색해 보면 많은 자료가 있지만 설치가 쉽진 않습니다.
AVX2 기능을 이용할려면 tensorflow 소스를 다시 빌드해야 하기 때문에 그냥 넘어가세요.
1 dpdld  
파이썬 처음 접해보는데 너무 어렵네요 ㅠㅠ
파이썬설치하고 라이브러리,텐서플로우까지 설치하고 학습모델까지 다운받았는데
python subocr.py명령어 입력하면 Traceback 오류가뜨네요
혹시 깃허브에서받은 python subocr.py 이런파일들을 저장해야하는 경로가 따로있나요???
2 darong  
에러 메세지가 구체적으로 어떤 것인지 봐야 무슨 문제인지 알 수 있습니다.
Error로 표시되는 부분을 구체적으로 알려주시면 해결책이 있나 살펴보겠습니다.
1 dpdld  
Traceback <most recent call last>:
  File "subocr.py", line 4, in <module>
    from utils import *
  File "C:\Users\SJJW\33\utils.py", line 5, in <module>
    from PIL import image, imageDraw, ImageFont
ModuleNotFoundError: No module Named 'PIL'

python subocr.py -로 어떤 명령어 입력해도 저렇게 나오네요 ㅠㅠ
뭔가 제가 파이썬의 기초를 몰라서 생긴 오류일까요??
2 darong  
이미지 처리에 사용하는 Pillow 라이브러리가 설치가 안되어있네요.
pip install Pillow
로 Pillow를 설치한 다음 다시 실행해 보세요.
1 dpdld  
답변 감사하구 자꾸 번거롭게 물어봐서 죄송합니다..
말씀하신대로 Pillow 설치하고 명령어 입력하니 실행이 되고 조금 진행되다가

Traceback (most recent call last):
  File "subocr.py", line 180, in <module>
    main(args)
  File "subocr.py", line 160, in main
    detect_model = load_detect_model(args.d)
  File "C:\Users\SJJW\33\utils.py", line 185, in load_detect_model
    model.load_weights(model_path)
  File "D:\python3.6\lib\site-packages\keras\engine\network.py", line 1166, in l
oad_weights
    f, self.layers, reshape=reshape)
  File "D:\python3.6\lib\site-packages\keras\engine\saving.py", line 1004, in lo
ad_weights_from_hdf5_group
    original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'

이렇게 다른 에러가 뜨네요 ㅠㅠ
2 darong  
에러 메세지만 보고서는 어디서 문제가 발생했는지 알기가 어렵네요.
먼저 "./model/craft/" 디렉토리에 weight.h5 파일이 있는지 확인해 보세요.
없으시면 github 페이지에 있는 [학습모델 다운로드] 링크에서 다운로드 받아 압축을 풀어주세요.
위 문제가 아니라면 keras 버전 문제일 수도 있으니 pip list 명령어로 keras 버전이 2.2.4인지도 확인해 보세요.
1 dpdld  
keras 버전 2.2.4 맞구 weight.h5 파일 해당 디렉토리에 있습니당.. 혹시 몰라 학습모델 새로다운받아서 해봐두 결과는 같네요
명령어는 python subocr.py -i C:\Users\SJJW\11 -o sub.srt 이렇게 입력했습니다 11폴더에 VideoSubFinder에서 추출한 RGBImages 파일들 있구용
단일이미지 OCR도 해봤는데
Traceback (most recent call last):
  File "ocr.py", line 139, in <module>
    main(args)
  File "ocr.py", line 125, in main
이부분만 위처럼 다르고 같은 에러가 나네요
해결책이 없을까용 후..
2 darong  
pip list로 h5py의 버전이 얼마인지 확인해 보세요. 제 환경에서는 2.10.0인데,
혹시 이보다 낮으면 2.10.0으로 재설치해 주세요.
현재로서는 에러 메세지만으로는 다른 원인을 찾기 힘드네요.
1 dpdld  
h5py 버전이 3.1.0 이길래 2.10.0으로 재설치해보니 잘됩니다
일일이 답장해주시고 좋은 프로그램 만들어주셔서 감사합니다 ㅠㅠ 타이핑시간 엄청 단축할 수 있겠네용
OCR인식결과이미지에서 텍스트는 올바르게 인식했는데 검출텍스트에는 인식한데로 검출이안되면 검출모델 학습이 새로 필요한거죵??
혹시 학습모델 업그레이드도 종종 하시나요??
2 darong  
OCR에서 제대로 인식이 안되면 correction.json에 잘못 인식되는 단어를 입력하면 OCR 후 교정 작업을 거치게 됩니다.
근본적으로는 OCR를 더 학습해야 하는 게 맞긴 합니다.
지금은 한국어 OCR이 아니라 영어 OCR를 만들고 있는데, 한국어 OCR 업데이트는 아무래도 시간이 걸릴 것 같습니다.