Python 한자 라 이브 러 리 문자 생 성 및 문자 그림 으로 변환 하 는 실례 상세 설명

필자 소 백 은 인쇄체 한자 의 깊이 있 는 학습 훈련 집 을 수집 할 때 처음부터 매우 까다 로 운 문 제 를 만 났 다.바로 신경 망 의 훈련 집 데 이 터 를 어떻게 얻 느 냐 하 는 것 이다.인터넷 검색 소 를 통 해 필 자 는 이미 다운로드 할 수 있 는 한자 의 훈련 집 을 찾 지 못 했 기 때문에 필 자 는 코드 자체 한자 의 훈련 집 데 이 터 를 사용 했다.
python 프로그램 을 사용 합 니 다.import 가 필요 한 python 라 이브 러 리 를 미리 설치 하 십시오.
그렇다면 우선 python 으로 한자 라 이브 러 리 의 문 자 를 어떻게 출력 합 니까?
필 자 는 컴퓨터 에서 한자 인 코딩 범 위 는 0x4E 00 에서 0x9FA 5 로 유 니 크()를 이용 하여 16 진법 인 코딩 을 인간 이 읽 을 수 있 는 글자 로 바 꿀 수 있다 는 것 을 알 아 냈 다.
python 라 이브 러 리 에서 유 니 크()가 무엇 인지,그리고 chr()와 ord()가 무엇 인지 확장 합 니 다.
chr()함 수 는 range(256)내(즉 0~255)정수 로 매개 변 수 를 만 들 고 해당 하 는 문 자 를 되 돌려 줍 니 다.
유 니 크()는 그것 과 마찬가지 로 유 니 코드 문자 만 되 돌려 줍 니 다.이 파 이 썬 2.0 에서 추 가 된 유 니 크()의 매개 변 수 는 파 이 썬 이 어떻게 컴 파일 되 었 는 지 에 의존 합 니 다.
USC 2 로 설 정 된 유 니 코드 라면 허용 범 위 는 range(65536)또는 0x0000-0xFFF 입 니 다.UCS 4 로 설정 하면 range(1114112)또는 0x 000000-0x 110000 이 어야 합 니 다.
제 공 된 인자 가 허용 되 지 않 는 범위 내 에 있 으 면 ValueError 의 이상 을 알 립 니 다.
ord()함 수 는 chr()함수(8 비트 ASCII 문자열)나 유 니 크()함수(유 니 코드 대상)의 짝 짓 기 함수 입 니 다.하나의 문자(길이 가 1 인 문자열)를 매개 변수 로 하여 대응 하 는 ASCII 수치 나 유 니 코드 수 치 를 되 돌려 줍 니 다.유 니 코드 문자 가 Python 정의 범 위 를 초과 하면 TypeError 의 이상 을 일 으 킬 수 있 습 니 다.
다음은 유 니 코드 인 코딩 된 글 자 를 파일 에 기록 하 는 것 입 니 다.open()을 직접 사용 하면 유 니 코드 인 코딩 Error:'ascii'codec can't encode character u'\u4e 00'in position 0:ordinal not in range(128)를 알려 줍 니 다.
이것 은 python 이 파일 을 읽 고 쓸 때 와 관련 된 두 가지 방식 입 니 다.하 나 는 open()이 고 하 나 는 codecs.open()입 니 다.
open()이라는 python 내 장 된 함수 에 있어 서 파일 을 여 는 방식 은 보통 다음 과 같 습 니 다.

f=open(file_name,access_mode = 'r',buffering = -1)。
file_name 은 파일 의 경로 에 파일 이름 을 추가 하 는 것 입 니 다.경 로 를 추가 하지 않 으 면 파일 은 python 프로그램의 경로 에 저 장 됩 니 다.
access_mode 는 파일 을 조작 하 는 모드 입 니 다.주로 r,w,rb,wb 등 이 있 습 니 다.디 테 일 한 인터넷 이 많 습 니 다.buffering=-1 은 파일 에 접근 하 는 캐 시 방식 을 표시 합 니 다.0 은 캐 시 하지 않 음 을 표시 합 니 다.1.한 줄 만 캐 시 하고 n 은 n 줄 을 캐 시 합 니 다.만약 제공 하지 않 거나 마이너스 라면 시스템 의 기본 캐 시 메커니즘 을 사용 하 는 것 을 대표 합 니 다.

>>> fr = open('test1.txt','wb')
>>> line1 = "   "
>>> fr.write(line1)
열 면 쓰 고 읽 는 동작 입 니 다.하지만 오픈 방법 으로 열 면 문제 가 있 을 수 있 습 니 다.열 린 파일 은 문자열 이 어떤 인 코딩 방식 이 든 str 형식 만 쓸 수 있 습 니 다.따라서 파일 에 기 록 된 데이터 의 인 코딩 이 일치 하지 않 을 때 codecs.open()을 사용 해 야 합 니 다.
이 방법 은 인 코딩 으로 파일 을 열 수 있 습 니 다.이 방법 으로 열 린 파일 을 읽 고 되 돌아 오 는 것 은 유 니 코드 입 니 다.
기록 할 때 인자 가 유 니 코드 라면 open()에서 지정 한 인 코딩 을 사용 하여 인 코딩 한 후 기록 합 니 다.str 라면 원본 코드 파일 에 표 시 된 문자 인 코딩 에 따라 유 니 코드 로 디 코딩 한 다음 에 상기 작업 을 합 니 다.
내 장 된 open()에 비해 이 방법 은 인 코딩 에 문제 가 생기 기 쉽 지 않다.

>>> import codecs
>>> line2 = u'   '
>>> fw = codecs.open('test1.txt','wb','utf-8')
>>> fw.write(line2)
이것 은 한자 라 이브 러 리 의 문 자 를 텍스트 파일 에 쓰 는 것 입 니 다.코드 는 다음 과 같 습 니 다.

import codecs
start,end = (0x4E00, 0x9FA5) #       
with codecs.open("chinese.txt", "wb", encoding="utf-8") as f:
 for codepoint in range(int(start),int(end)):
 f.write(unichr(codepoint)) #    
같은 디 렉 터 리 파일 에서 한자 라 이브 러 리 를 만 드 는 chinese.txt 파일:
Python生成汉字字库文字,以及转换为文字图片
다음은 한자 라 이브 러 리 의 글 자 를 하나씩 그림 으로 저장 하 는 것 입 니 다.pip install pygame 라 이브 러 리 가 필요 합 니 다.
pygame 은 그림 에 텍스트 를 렌 더 링 하여 저장 할 수 있 습 니 다.
코드 는 다음 과 같 습 니 다:

#encoding: utf-8
import os
import pygame

chinese_dir = 'chinese'
if not os.path.exists(chinese_dir):
 os.mkdir(chinese_dir)

pygame.init()
start,end = (0x4E00, 0x9FA5) #       
for codepoint in range(int(start), int(end)):
 word = unichr(codepoint)
 font = pygame.font.Font("msyh.ttc", 64)
 #                 msyh.ttc,   c:\Windows\Fonts    
 # 64          
 rtext = font.render(word, True, (0, 0, 0), (255, 255, 255))
 pygame.image.save(rtext, os.path.join(chinese_dir, word + ".png"))
여 기 는 chinese 폴 더 에 생 성 된 문자 그림 입 니 다.글씨 체 는 흑체 이 고 이 를 바탕 으로 한자 인식 을 계속 만 들 수 있 는 훈련 집 입 니 다.
Python生成汉字字库文字,以及转换为文字图片
파 이 썬 이 한자 라 이브 러 리 문 자 를 만 들 고 문자 그림 으로 전환 하 는 사례 에 대한 상세 한 설명 은 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기