[Pyocr+TesseractOCR] 경마 뉴스의 활자화;정밀도를 높이다

11837 단어 tesseract-ocrOCRPython
이번에는 정밀도 향상에 도전했다.
결과적으로 보면 아무래도 쓸 수 없을 것 같다.
다음 두 가지를 참고했습니다.
【참고】
파이톤으로 일본어 OCR 할 때의 노트.
갑골문자로 쓴 글을 OCR로 읽어보도록 하겠습니다.

해본 일


・읽기, 해석의 패턴 변경 시도
• 정밀도를 높이기 위해
① 학습한 데이터 변경
② 배워보자

・읽기, 해석의 패턴 변경 시도


참고는 ①부터 아래의 읽기 매개 변수를 변경할 수 있다는 것을 알고 이것을 시도해 봤습니다.
결과는 역시 6이 가장 좋다.
※ 자세한 내용은 생략
pagesegmode values are:
0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.
다음은 사실 원래 OCR이었기 때문에 나는 모든 내용을 읽고 해석해 보았다.
코드는 다음과 같다.
with open('rect_line.txt', 'w', newline='\n', encoding="utf-8") as f:
    for i in range(0,1,1):
        txt = tool.image_to_string(
            Image.open("./data1/kiseki_"+str(i)+".jpg"),
            lang=lang_setting,  # "jpn",
            builder=pyocr.builders.LineBoxBuilder(tesseract_layout=6) #6 LineBoxBuilder #TextBuilder
        )
        # 認識範囲を描画
        out = cv2.imread("./data/8_1_roi_"+str(i)+".jpg")
        for d in txt:
            print(d.position)
            cv2.rectangle(out, d.position[0], d.position[1], (0, 0, 255), 2)  # 赤い枠を描画
            plt.imshow(out)
            plt.pause(1)
            plt.close()
            txt=d.content
            print( txt )
            f.write(txt+'\n')

결과(jpn best)는 다음과 같습니다.
※ 전반적으로 이미지 추출보다 정밀도가 떨어짐
(keras-gpu) C:\Users\user\AppData\Local\Tesseract-OCR>python pyocr_lineBox_read.py
['eng', 'jpn', 'jpn1', 'jpn_best', 'jpn_fast', 'jpn_vert', 'jpn_vert_fast', 'kib', 'num', 'osd']
jpn_best
Will use tool 'Tesseract (sh)'
((4, 6), (105, 15))
2019 年 3 月 31 日 語 守
((3, 10), (106, 38))
太尾
((64, 36), (94, 44))
14 還 6
((4, 36), (105, 56))
ba
((4, 60), (105, 70))
三田 音 音 Se
((4, 75), (105, 83))
ww ea
((5, 88), (105, 98))
良 S08kg
((9, 101), (105, 110))
21212|2 生 354
((5, 114), (53, 122))
アル アイ ン
((8, 128), (32, 138))
(on
위치가 비교적 정확하게 확정되었다.
그리고 OCR을 함께 할 수 있다는 것이 장점이다.
하지만 정밀도는 아직 떨어진다.

• 정밀도를 높이기 위해


① 학습한 데이터 변경


공개된 자료는 다음과 같다.
tesseract-ocr / tesseract
Updated Data Files for Version 4.00 (September 15, 2017)
We have three sets of .traineddata files on GitHub in three separate repositories.
https://github.com/tesseract-ocr/tessdata_best
https://github.com/tesseract-ocr/tessdata_fast
https://github.com/tesseract-ocr/tessdata
이 세 가지 데이터는 일반 사용자의tessdata-패스트 추천합니다.
확실히 처리 속도가 가장 빠르고 정밀도도 얻었다.
tessdata_베스트는 처리 방법을 희생하지만 정확도가 높아져 이를 바탕으로 공부하는 것이 좋다.
사용해 보면 정밀도에 큰 변화가 없을 것 같아요.
tessdata는 이전 버전과 대응한다고 합니다.
따라서 우리는 각각 이런 것들을 사용하고 진일보한 조합을 사용했지만 정확한 정밀도는 아니었다.
그 밖에
Data Files for Version 4.00 (November 29, 2016)
이런 게 있어서 이것도 써 봤는데 아직 안 돼요.
그래서 이런 조합을 합치면 경마 뉴스를 읽을 때tessdata나는 패스트가 비교적 좋다고 생각한다.
※ 정밀도는 아직 멀었어요..더구나 그룹일 때의 예.

② 배워보자


그래서 공부도 해봤어요.
학습 세트는 아래 사이트에 있습니다.참고②의 사용법이 있다.
다음은 참고 ②의 판매.
jTessBoxEditor 설치
Tesseract용 학습 데이터를 만드는 데 사용되는 도구 "JTessBoxEditor"를 설치합니다.
설치 방법
zip 파일'jTessBoxEditor-2.0.zip'다운로드는 아래에서 시작합니다.
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
위의 zip 파일을 적절한 폴더로 압축해제합니다.
부팅 방법
jTessBoxEditor.두 번 클릭하거나 다음 명령을 통해jar를 시작합니다.
java -Xms128m -Xmx1024m -jar jTessBoxEditor.jar
※ 실행을 위해서는 JRE8 이상이 필요합니다.
※ Oracle 등록, 다운로드 및 설치 완료
※ 더블 클릭 시동
사용 방법은 상술한 것도 알지만, 아래에 더욱 상세하게 기재되어 있다.
【참고】
・③텍스트 인식 엔진 Tesseract OCR을 통한 학습
간단하게 그림을 붙이다.
【Generate】
Output;C:\Users\user\Downloads\jTessBoxEditor-2.2.0\jTessBoxEditor\kib
kib;kib.traineddata의 세 글자
글꼴배울 문자열 글꼴이지만 MS UI Gothic

[Training Tif 인상!]
kib.msuigothic.exp0.tif를 열면 Tif 이미지에서 학습하는 방법을 볼 수 있습니다.

【Training】
TrainingData;kib.msuigothic.exp0.box
Langage;kib
BootstrapLangage;jpn
TrainWithExistingBox 선택
런에서 실행 중...오류가 없으면 다음과 같이 끝납니다. 다음 디렉터리에서kib입니다.tessdata를 생성합니다.
파일을 TessaractoCR의 실행 환경에 복사하여 사용합니다.
C:\Users\user\Downloads\jTessBoxEditor-2.2.0\jTessBoxEditor\kib\tessdata
C:\Users\user\AppData\Local\Tesseract-OCR\tessdata

학습에 관해서는 좀 더 구체적으로 말하고자 합니다. ②와 ③의 절차를 참고하여 학습할 수 있기 때문에 상세한 내용을 생략합니다.
학습 데이터의 사용 방법은 다음과 같다.
# そのOCRツールで使用できる言語を確認
langs = tool.get_available_languages()
print(langs) 
# 言語に日本語と今回の学習済みデータ(kib)を指定
lang_setting = langs[1]+"+"+langs[6]  
#['eng', 'jpn', 'jpn_best', 'jpn_fast', 'jpn_vert', 'jpn_vert_fast', 'kib']
을 입력합니다.

코드는 전체적으로 다음과 같다.


read_keiba_paper /pyocr_lineBox_read.py

총결산


· OCR의 정밀도를 높이기 위해 학습한 데이터를 조합해 보았지만 정밀도는 그다지 향상되지 않았다
/공부도 해 보았지만 효과가 제한되어 향상되지 않았다
원리적으로 좀 더 개량하고 싶다

lang_setting=jpn+jpn1+jpn_best+jpn_fast+jpn_vert+jpn_vert_fast 사용 시
(keras-gpu) C:\Users\user\AppData\Local\Tesseract-OCR>python pyocr_example.py
['eng', 'jpn', 'jpn1', 'jpn_best', 'jpn_fast', 'jpn_vert', 'jpn_vert_fast', 'kib', 'num', 'osd']
jpn+jpn1+jpn_best+jpn_fast+jpn_vert+jpn_vert_fast
Will use tool 'Tesseract (sh)'
角 居 効 彦 ( 柔 束 )
畜 : ブリ ッ ツ フィ ナー レ
( 母 の 父 : デ ィ ー ブ イ ン パ バ ク ト )
父 : ル ー ラ ー シ ッ プ
(② 番 人 気 ) |
ま . さ ③
川 田 封 雅
仕 ⑤/ 黛 鳥
58.0kq
ル ベーw
デ ー
ャ ー

_・ー ご に
良
大 貨 杯
2019 年 3 月 31 互
川 [ 田 封 雅
2000 受
2 荷
ア ル ア イ ン
(0.0)
2
ク
ク
ク
14 6 番
デ ま ペ w
ご Tf イ ノ ト ス ト
③ ③⑤.④
57.0kg
コー
S08kq
阪神
本
有 馬 記 念
2018 年 12 月 23 日 中 山
川 [ 田 封 雅
2500 逐
拐 輝
ら 着
ブラ スト ワン
ピ ー ズ (D.⑥)
1
1
1
1
t も 磁 ⑭ 畑
② 哉 人 気
③F ③⑦.⑤
57.0kq
2・32.8
S06kq
G l
2018 年 11 月 25 日 東京
シ ャ ル ン C
川 田 将 雅
2400 芝
イ (0.3)
フ 着
民
ア ー モ ン ド ア
1
称 昨
1
⑭ 碁 ⑧ 界
④ す 哉 人 気
③F ③④.⑦
57.0kq
ナ ェ フ ロ . ロ
504kq
G |
天 君 贋 ( 秋 )
2018 年 10 月 28 日 束 京
③ 着
川田 封 雄
2000 逐
民
レ イ エ オ ロ
(0.2)
1
ーー]
⑫ 磁 ① 番
ら 孝 人 気
③F ③④.⑦
58.0kq
57.0
496kqg

좋은 웹페이지 즐겨찾기