Tesseract+PyOCR로 간이 OCR 시도

10715 단어 OCRpyocrPython
이번에 우리는'Tesseract OCR'과'PyOCR'을 사용해 OCR(광학문자인식)을 시도했다.

이른바 Tesseract OCR


'Tesseract OCR'은 구글, HP가 개발한 오픈 소스 OCR 엔진이다.
100개 이상의 언어를 인식할 수 있는 유니코드(UTF-8)를 지원합니다.

이른바 PyOCR


'PyOCR'은 파이톤이 사용하는 OCR 도구 지퍼다.
파이썬 프로그램의 다양한 OCR 도구를 사용할 수 있습니다.
현재 지원되는 OCR 도구는 다음과 같은 3가지입니다.
  • Libtesseract
  • Tesseract
  • Cuneiform
  • 환경 구조


    ※ 운영 환경은 맥OS입니다.

    1. Tesseract OCR


    ① Tesseract 설치
    Homebrew를 사용할 때brew install tesseract 끝납니다.
    ② 데이터 학습 준비
      https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
    상기 링크에서 훈련 데이터를 다운로드하여 아래 내용에 저장한다.
      /usr/local/Cellar/tesseract/[tesseractのバージョン]/share/tessdata4.0.0 버전에서는 속도를 중시하는'tessdata fast'정밀도의'tessdata best'를 선택할 수 있습니다.
    본 보도는 일반적인 훈련 데이터'tessdata'를 사용합니다.
    ※ 기타 환경은 아래 내용을 참조하십시오.
      https://github.com/tesseract-ocr/tesseract/wiki

    2. PyOCR


    ① PyOCR 설치
    다음 명령만 실행합니다.
      sudo pip3 install pyocr환경 구축은 이것으로 끝난다.간단하네.

    실행하다


    집행여기.의 샘플.(※ 조금 만졌다.)
    example.py
    from PIL import Image
    import sys
    
    import pyocr
    import pyocr.builders
    
    tools = pyocr.get_available_tools()
    if len(tools) == 0:
        print("No OCR tool found")
        sys.exit(1)
    
    tool = tools[0]
    print("Will use tool '%s'" % (tool.get_name()))
    
    txt = tool.image_to_string(
        Image.open("[ファイル名]"),
        lang="jpn",
        builder=pyocr.builders.TextBuilder(tesseract_layout=6)
    )
    print( txt )
    

    ①Wikipedia



    실행 결과
    出 典 : フ リ ー 百 科 事 典 『 ウ ィ キ ペ デ ィ ア (Wikipedia) 』
    OCR
    ・ 光 学 文 字 認 識 (Optical Character Recognition) の 略 称 。
    ・ 光 学 式 文 字 読 取 装 置 (Optical Character Reader) の 略 称 。
    ・ オ イ ル 循 環 率 (Oil Circulation Ratio) の 略 称 。
    ・ 過 電 流 継 電 器 (Over Current Relay) の 略 称 。
    こ の ペ ー ジ は 曖 昧 さ 回 避 の た め の ペ ー ジ で す 。 一 つ の 語 句 が 複 数 の 意 味 ・ 職 能 を 有 す る 場 合 の 水 先 案 内 の た め に 、 異 な る 用 法 を 一 覧 に し て あ り ま す 。 お 探 し の 用 語 に 一 番 近 い 記 事 を
    選 ん で 下 さ い 。 こ の ペ ー ジ ヘ リ ン ク し て い る ペ ー ジ を 見 つ け た ら 、 リ ン ク を 適 切 な 項 目 に 張 り 替 え て 下 さ い 。
    カ テ ゴ リ : 暖 昧 さ 回 避
    
    제목의'OCR'은 읽지 못했지만 대체로 완벽했다.

    ②야후뉴스



    실행 결과
    ニ ュ ー ス | 細 津 _ エ ン タ メ レ ス ポ ー
    ①⑧ 時 ⑥ 分 更 新
    ・ 細 野 氏 の 処 遇 岸 田 氏 が 不 快 感 國 四 謬 璽以′ 和
    ・ 小 ④ 死 亡 第 三 者 委 を 設 置 へ 団 E ⑤ ョ ~ 。
    ・③① 日 は 広 く 雨 予 報 都 心 で 雪 か 団 G ド 】
    ・ 広 河 隆 一 氏 か ら 性 袖 害 新 告 発 國 ` き て ま す 」
    ・ パ チ ン コ 依 存 ⑤ 社 が 対 策 表 明 団 (TE 雷睾豊冑4時鵠分配信
    ・ ピ ー ス ポ ー ト 豪 華 造 船 が 頓 挫 ⑪
    ・ VG 井 ノ 原 提 案 ア プ リ が 話 題 団
    ・ 亡 き 有 賀 さ つ き さ ん 父 の 後 悔 國
    も っ と 見 る ト ピ ッ ク ス 一 覧
    
    숫자를 ◯으로 묶다.(규격이 있는 것 같다)
    또 카메라의 그림 문자 등도 문자로 오인했다.

    ③ 사진에서 읽기



    실행 결과
    ョ の ス キ ト
    辻 点 花 付
    紅 余 化 伝
    RO 〇 YAL 〟
    M ま EL K T イ EA
    0 :鯱翼 ① ダ
    ロ イ ヤ ル ミ ル ク デ ー 一 ー
    繁 勇 表 示 (①00ml 当 た り ノ
    ① げ ー③⑥kcaL た ん ば く < 質 0Gg、 胆 賀
    為 航 化 物 ⑥.⑥⑧ 食 報 柑 き 見 0
    ② ` 沈 殿 し た り 固 ま っ た り す る `
    ⑳ 謬 あ り ま せ ん 。g r 声 け て く だ さ い 映 種 城 捨 畜
    S 格 a
    `幟鱒鱒州 ′~
    A ①
    
    도대체 정밀도가 떨어진 건가..
    이해하기 어려우니 그림의 어느 부분이 문자인지 확인해 보세요.

    경품(WordBox)


    상자에 단어로 인식되는 영역을 반환할 수 있으므로 OpenCV를 사용하여 사각형을 그립니다.
    코드는 아래 보도를 참고하였다.
    파이톤으로 일본어 OCR 할 때의 노트.
    example.py
    import pyocr
    import pyocr.builders
    import cv2
    from PIL import Image
    import sys
    
    tools = pyocr.get_available_tools()
    
    if len(tools) == 0:
        print("No OCR tool found")
        sys.exit(1)
    
    tool = tools[0]
    
    res = tool.image_to_string(Image.open("[ファイル名]"),
                               lang="jpn",
                               builder=pyocr.builders.WordBoxBuilder(tesseract_layout=6))
    
    out = cv2.imread("[ファイル名]")
    for d in res:
        print(d.content)
        print(d.position)
        cv2.rectangle(out_resize, d.position[0], d.position[1], (0, 0, 255), 2)
    
    cv2.imshow("img",out)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    도안과 문자를 한 문자로 오인하다.
    이 때문에 Tesseract OCR(트레이닝 데이터)은 문자의 기울기와 실진을 잘하지 못한다.
    무늬 등에 대한 오인식도 많기 때문에 실제 응용에서는 다양한 제한이 필요하다.
    하지만 식욕을 돋우는 소스로 그 정확도는 파격적이니 꼭 시도해 보세요!

    참조 링크


    파이톤으로 일본어 OCR 할 때의 노트.
    [PyOCR] 이미지에서 일본어 문자 데이터 추출

    좋은 웹페이지 즐겨찾기