Tesseract+PyOCR로 간이 OCR 시도
이른바 Tesseract OCR
'Tesseract OCR'은 구글, HP가 개발한 오픈 소스 OCR 엔진이다.
100개 이상의 언어를 인식할 수 있는 유니코드(UTF-8)를 지원합니다.
이른바 PyOCR
'PyOCR'은 파이톤이 사용하는 OCR 도구 지퍼다.
파이썬 프로그램의 다양한 OCR 도구를 사용할 수 있습니다.
현재 지원되는 OCR 도구는 다음과 같은 3가지입니다.
환경 구조
※ 운영 환경은 맥OS입니다.
1. Tesseract OCR
① Tesseract 설치
Homebrew를 사용할 때
brew install tesseract
끝납니다.② 데이터 학습 준비
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
상기 링크에서 훈련 데이터를 다운로드하여 아래 내용에 저장한다.
/usr/local/Cellar/tesseract/[tesseractのバージョン]/share/tessdata
4.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] 이미지에서 일본어 문자 데이터 추출
Reference
이 문제에 관하여(Tesseract+PyOCR로 간이 OCR 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nabechi6011/items/3a367ca94dbd208efcc7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)