DdddOcr은 작성자와 kerlomz 간의 공동 작업으로 대량의 무작위 데이터를 생성하고 심층적인 네트워크 교육을 수행합니다. 이 라이브러리를 사용하는 효과는 전적으로 형이상학에 달려 있습니다. 식별 가능.
최소 의존성 개념의 DdddOcr은 사용자 구성 및 사용 비용을 최소화하여 모든 테스터에게 편안한 경험을 제공하기를 희망합니다.
프로젝트 주소: 보내려면 여기를 클릭하세요.
사용하기 쉬운 범용 보안 문자 인식 Python 라이브러리
이 프로젝트에 대한 문서 살펴보기 »
· 버그 신고 · 새로운 기능 제안
후원 파트너
시작하기 가이드
환경 지원
설치 단계
파일 디렉터리 설명
프로젝트 기본 지원
문서 사용
기본 OCR 인식 능력
표적 탐지 능력
슬라이더 감지
OCR 확률 출력
맞춤 OCR 학습 모델 가져오기
버전 관리
관련 추천 기사 또는 프로젝트
작가
기부
스타의 역사
후원 파트너 | 추천 이유 | |
---|---|---|
예보안문자 | Google reCaptcha 인증 코드/hCaptcha 인증 코드/funCaptcha 인증 코드 상용 등급 식별 인터페이스 VIP4로 직접 클릭하세요. | |
슈퍼 이글 | 안전하고 정확하며 효율적이고 안정적이며 개방적이며 대규모 동시성을 지원하는 강력한 기술 및 검증 팀을 갖춘 세계 최고의 지능형 이미지 분류 및 인식 비즈니스입니다. 7*24시간 작업진행관리 | |
말레니아 | Malenia 기업용 프록시 IP 게이트웨이 플랫폼 / 프록시 IP 배포 소프트웨어 | |
님버스 VPS | 등록 첫 달 50% 할인 | 절강 노드 저렴한 가격과 넓은 대역폭, 월 1억 30위안 |
체계 | CPU | GPU | 지원되는 최대 py 버전 | 주목 |
---|---|---|---|---|
윈도우 64비트 | √ | √ | 3.12 | 일부 Windows 버전에서는 vc 런타임 라이브러리를 설치해야 합니다. |
윈도우 32비트 | × | × | - | |
리눅스64/ARM64 | √ | √ | 3.12 | |
리눅스 32 | × | × | - | |
Macos X64 | √ | √ | 3.12 | M1/M2/M3...칩 참조 #67 |
i.pypi에서 설치
pip 설치 ddddocr
ii. 소스에서 설치
자식 클론 https://github.com/sml2h3/dddddocr.gitcd ddddocr 파이썬 setup.py
dddddocr 프로젝트의 루트 디렉터리에 직접 dddddocr을 가져오지 마세요 . 개발 프로젝트의 디렉터리 이름이 dddddocr이 아닌지 확인하세요.
예:
ddddocr ├── MANIFEST.in ├── LICENSE ├── README.md ├── /ddddocr/ │ │── __init__.py 主代码库文件 │ │── common.onnx 新ocr模型 │ │── common_det.onnx 目标检测模型 │ │── common_old.onnx 老ocr模型 │ │── logo.png │ │── README.md │ │── requirements.txt ├── logo.png └── setup.py
이 프로젝트는 dddd_trainer의 훈련 결과를 기반으로 합니다. dddddocr의 기본 추론은 onnxruntime에 의존합니다. 따라서 이 프로젝트의 최대 호환성 및 Python 버전 지원은 주로 onnxruntime에 달려 있습니다.
주로 한 줄의 텍스트를 식별하는 데 사용됩니다. 즉, 일반적인 영어 및 숫자 확인 코드 등 텍스트 부분이 그림의 주요 부분을 차지합니다. 이 프로젝트는 중국어, 영어(임의의 대소문자 또는 설정에 따라 대소문자를 인식할 수 있습니다) 결과 범위), 숫자 및 일부 특수 문자.
# example.pyimport ddddocrocr = dddocr.DddddOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
이 라이브러리에는 두 세트의 OCR 모델이 기본적으로 자동으로 전환되지 않습니다. dddocr을 초기화할 때 매개변수를 전환해야 합니다.
# example.pyimport ddddocrocr = dddocr.DddddOcr(beta=True) # ocr 모델의 두 번째 세트로 전환 image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( 결과)
일부 투명한 검정색 png 형식 사진에 대한 인식 지원 팁 : classification
방법은 png_fix
매개변수를 사용하며 기본값은 False입니다.
ocr.classification(이미지, png_fix=True)
알아채다
이전에는 많은 사람들이 OCR이 인식될 때마다 ddddocr을 다시 초기화하는 것을 좋아했습니다. 즉, 매번 ocr = ddddocr.DdddOcr()
실행하는 것입니다. 일반적으로 이것은 한 번만 초기화하면 되기 때문에 잘못된 것입니다. 초기화 후 첫 인식 속도가 매우 느립니다.
참고 예시 사진
다음 사진을 포함하되 이에 국한되지는 않습니다.
주로 이미지에서 가능한 대상 피사체 위치를 빠르게 감지하는 데 사용됩니다. 감지된 대상이 반드시 텍스트일 필요는 없으므로 이 기능은 대상의 bbox 위치만 제공합니다 (대상 감지에서는 일반적으로 bbox(경계 상자, 약어)를 사용합니다. bbox)는 대상 위치를 설명하는 직사각형 상자이며 직사각형의 왼쪽 상단 모서리의 x 및 y축 좌표와 오른쪽 하단 모서리의 x 및 y축 좌표로 결정될 수 있습니다.
사용 중 ocr 함수를 호출할 필요가 없다면 초기화 시 ocr=False
매개변수를 전달하여 ocr 기능을 끌 수 있습니다. 대상 감지를 활성화하려면 det=True
import ddddocrimport cv2det = dddocr.DdddOcr(det=True) with open("test.jpg", 'rb') as f:image = f.read()bboxes = det.Detection(image)print(bboxes)im = cv2 .imread("test.jpg")bbox의 bbox:x1, y1, x2, y2 = bboxim = cv2.직사각형(im, (x1, y1), (x2, y2), 색상=(0, 0, 255), 두께=2)cv2.imwrite("result.jpg", im)
참고 예시 사진
다음 사진을 포함하되 이에 국한되지는 않습니다.
본 프로젝트의 슬라이더 감지 기능은 AI 인식으로 구현되지 않고, opencv에 내장된 알고리즘으로 구현됩니다. 스크린샷을 찍는 사용자에게는 그다지 친숙하지 않을 수 있습니다. 사용 중 ocr 함수나 대상 감지 기능을 호출할 필요가 없다면 초기화 시 ocr=False
ocr 기능을 끄거나 det=False
False 로 설정할 수 있습니다. 표적 탐지 기능을 끄십시오.
이 함수에는 두 가지 다른 상황에 적합한 두 가지 내장 알고리즘 구현이 있습니다. 자세한 내용은 다음 지침을 참조하세요.
가. 알고리즘 1
알고리즘 1의 원리는 슬라이더 이미지의 가장자리를 통해 배경 이미지의 해당 피트 위치를 계산하는 것입니다. 슬라이더 이미지는 투명한 배경 이미지입니다.
슬라이더 차트
배경 이미지
det = ddddocr.DddddOcr(det=False, ocr=False) with open('target.png', 'rb') as f:target_bytes = f.read() with open('Background.png', 'rb') f:Background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)로
슬라이더 차트에는 테두리가 투명한 문제가 있을 수 있으므로 계산 결과가 정확하지 않을 수 있습니다. 결과 bbox를 수정하려면 슬라이더 차트의 투명 테두리 너비를 직접 추정해야 합니다.
팁: 슬라이더에 배경이 너무 많지 않은 경우 일반적으로 jpg 또는 bmp 형식의 그림인 simple_target 매개변수를 추가할 수 있습니다.
Slide = ddddocr.DddddOcr(det=False, ocr=False) with open('target.jpg', 'rb') as f:target_bytes = f.read() with open('ground.jpg', 'rb') f:Background_bytes = f.read() res = Slide.slide_match(target_bytes, background_bytes, simple_target=True)로 인쇄(해상도)
가. 알고리즘 2
알고리즘 2는 두 사진의 차이를 비교하여 슬라이더 타겟 피트의 위치를 결정하는 것입니다.
목표 구덩이의 그림자가 있는 전체 그림인 그림 A를 참조하세요.
참고 사진 b, 전체 사진
Slide = ddddocr.DddddOcr(det=False, ocr=False) with open('bg.jpg', 'rb') as f:target_bytes = f.read() with open('fullpage.jpg', 'rb') f:Background_bytes = f.read() img = cv2.imread("bg.jpg") res = 슬라이드.슬라이드_비교(target_bytes, background_bytes)인쇄(res)
보다 유연한 OCR 결과 제어 및 범위 제한을 제공하기 위해 프로젝트에서는 OCR 결과의 범위 제한을 지원합니다.
이때, classification
classification
는 전체 문자 테이블의 probability=True
을 반환할 것입니다. 물론, 반환되는 문자 범위를 set_ranges
메소드를 통해 설정할 수도 있습니다. 결과.
Ⅰ. set_ranges
메소드는 반환할 문자를 제한합니다.
이 메소드는 입력이 int 유형인 경우 내장 문자 세트 제한이고, 문자열 유형이 사용자 정의 문자 세트인 경우 1개의 매개변수를 허용합니다.
int형인 경우 다음 표를 참고하세요.
매개변수 값 | 중요성 |
---|---|
0 | 순수 정수 0-9 |
1 | 순수 소문자 영어 az |
2 | 순수 대문자 영어 AZ |
3 | 소문자 영어 az + 대문자 영어 AZ |
4 | 소문자 영어 az + 정수 0-9 |
5 | 대문자 영어 AZ + 정수 0-9 |
6 | 소문자 영어 az + 대문자 영어 AZ + 정수 0-9 |
7 | 기본 문자 라이브러리 - 소문자 영어 az - 대문자 영어 AZ - 정수 0-9 |
문자열 유형인 경우 공백을 포함하지 않는 텍스트를 전달하세요. 각 문자는 "0123456789+-x/=""
와 같은 후보 단어입니다.
import ddddocrocr = dddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(이미지, 확률=True )s = ""결과['확률']:s +=의 i에 대해 결과['문자 세트'][i.index(max(i))]인쇄(들)
이 프로젝트는 dddd_trainer에서 맞춤형 학습 모델 가져오기를 지원합니다.
import ddddocrocr = dddocr.DdddOcr(det=False, ocr=False, import_onnx_path="myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx", charsets_path="charsets.json")with open('test.jpg ', 'rb') f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)로
이 프로젝트에서는 버전 관리를 위해 Git을 사용합니다. 저장소에서 현재 사용 가능한 버전을 볼 수 있습니다.
순수 VBA를 사용하여 로컬에서 네트워크 확인 코드를 얻기 위한 종합 솔루션인 동생 OCR을 가져오세요.
ddddocr 녹 버전
captcha-killer의 수정된 버전
영숫자 CAPTCHA 모델을 훈련하고 ddddocr을 통해 배포 호출을 식별합니다.
...
더 많은 우수한 사례나 튜토리얼을 제출해 주시면 됩니다. [Submission]으로 시작하는 새 이슈 제목을 직접 작성하고 공개 튜토리얼 사이트에 대한 링크를 첨부하면 상대적으로 기사 내용을 기준으로 Readme를 표시하도록 선택하겠습니다. 반복되지 않거나 핵심 내용이 있습니다. 모두 감사합니다.
친구가 너무 많으면 합격하지 못할 수도 있습니다. 궁금한 점이 있으면 이슈로 소통하면 됩니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 라이선스를 참조하세요.