DdddOcr est une collaboration entre l'auteur et kerlomz. Il génère de gros lots de données aléatoires et effectue une formation réseau approfondie. Il n'est conçu pour aucun fabricant de code de vérification. L'effet de l'utilisation de cette bibliothèque dépend entièrement de la métaphysique. identifiable.
DdddOcr, le concept de dépendance minimale, minimise les coûts de configuration utilisateur et d'utilisation, dans l'espoir d'apporter une expérience confortable à chaque testeur
Adresse du projet : Cliquez ici pour envoyer
Une bibliothèque Python de reconnaissance universelle de captcha facile à utiliser
Explorez la documentation de ce projet »
· Signaler les bugs · Proposer de nouvelles fonctionnalités
Partenaires de sponsoring
Guide de démarrage
Soutien environnemental
Étapes d'installation
Description du répertoire de fichiers
Support sous-jacent au projet
Utiliser la documentation
Capacité de base de reconnaissance OCR
Capacité de détection de cible
Détection de curseur
Sortie de probabilité OCR
Importation de modèle de formation OCR personnalisé
contrôle de version
Articles ou projets recommandés connexes
auteur
Faire un don
Histoire des étoiles
Partenaires de sponsoring | Raisons de la recommandation | |
---|---|---|
OuiCaptcha | Code de vérification Google reCaptcha/code de vérification hCaptcha/code de vérification funCaptcha interface d'identification de qualité commerciale cliquez-moi directement sur VIP4 | |
super aigle | Leader mondial de la classification et de la reconnaissance d'images intelligentes, sûr, précis, efficace, stable, ouvert, doté d'une solide équipe technique et de vérification qui prend en charge une grande concurrence. Gestion de l'avancement des travaux 7*24h | |
Malénia | Plate-forme de passerelle IP proxy de niveau entreprise Malenia/logiciel de distribution IP proxy | |
Nimbus VPS | 50% de réduction pour le premier mois d'inscription | Noeud du Zhejiang à bas prix et large bande passante, 100 millions de 30 yuans par mois |
système | Processeur | GPU | Version py maximale prise en charge | Remarque |
---|---|---|---|---|
Windows 64 bits | √ | √ | 3.12 | Certaines versions de Windows doivent installer la bibliothèque d'exécution vc |
Windows 32 bits | × | × | - | |
Linux64/ARM64 | √ | √ | 3.12 | |
Linux32 | × | × | - | |
MacOS X64 | √ | √ | 3.12 | M1/M2/M3...Référence de puce #67 |
i. Installer à partir de pypi
pip installer dddddocr
ii. Installer à partir des sources
git clone https://github.com/sml2h3/ddddocr.gitcd ddddocr configuration python.py
Veuillez ne pas importer dddddocr directement dans le répertoire racine du projet dddddocr . Veuillez vous assurer que le nom du répertoire de votre projet de développement n'est pas dddddocr. C'est du bon sens.
par exemple :
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
Ce projet est basé sur les résultats de formation de dddd_trainer.Le cadre de formation sous-jacent est pytorch. Le raisonnement sous-jacent de dddddocr repose sur onnxruntime. Par conséquent, la compatibilité maximale et la prise en charge de la version python de ce projet dépendent principalement de onnxruntime.
Il est principalement utilisé pour identifier des lignes uniques de texte, c'est-à-dire que la partie texte occupe la partie principale de l'image, comme l'anglais commun et les codes de vérification numérique, etc. Ce projet peut reconnaître le chinois, l'anglais (cas aléatoire ou cas par réglage la plage de résultats), des nombres et des caractères spéciaux.
# exemple.pyimport ddddocrocr = ddddocr.DdddOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
Il existe deux ensembles de modèles OCR intégrés dans cette bibliothèque. Ils ne basculeront pas automatiquement par défaut. Vous devez basculer entre les paramètres lors de l'initialisation de ddddocr.
# example.pyimport ddddocrocr = ddddocr.DdddOcr(beta=True) # Passer au deuxième ensemble de modèles ocr image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( résultat)
Conseils pour la prise en charge de la reconnaissance de certaines images transparentes au format png noir : classification
utilise le paramètre png_fix
, la valeur par défaut est False
ocr.classification(image, png_fix=True)
Avis
Auparavant, j'ai découvert que beaucoup de gens aiment réinitialiser ddddocr chaque fois que l'OCR est reconnu, c'est-à-dire exécuter ocr = ddddocr.DdddOcr()
à chaque fois. De manière générale, il ne doit être initialisé qu'une seule fois, car chacun. initialisation et La première vitesse de reconnaissance après l'initialisation est très lente.
Exemple d'image de référence
Y compris mais sans s'y limiter les images suivantes
Elle est principalement utilisée pour détecter rapidement la position possible du sujet cible dans l'image. Étant donné que la cible détectée n'est pas nécessairement du texte, cette fonction fournit uniquement la position bbox de la cible (dans la détection de cible, nous utilisons généralement bbox (bounding box, l'abréviation). est bbox) pour décrire la position cible. bbox est une boîte rectangulaire, qui peut être déterminée par les coordonnées des axes x et y du coin supérieur gauche du rectangle et les coordonnées des axes x et y du coin inférieur droit)
S'il n'est pas nécessaire d'appeler la fonction ocr pendant l'utilisation, vous pouvez désactiver la fonction ocr en passant le paramètre ocr=False
lors de l'initialisation. Pour activer la détection de cible, vous devez passer le paramètre det=True
importer ddddocrimport cv2det = ddddocr.DdddOcr(det=True)with open("test.jpg", 'rb') as f:image = f.read()bboxes = det.detection(image)print(bboxes)im = cv2 .imread("test.jpg")pour bbox dans bboxes :x1, y1, x2, y2 = bboxim = cv2.rectangle(im, (x1, y1), (x2, y2), couleur=(0, 0, 255), épaisseur=2)cv2.imwrite("result.jpg", im)
Exemple d'image de référence
Y compris mais sans s'y limiter les images suivantes
La fonction de détection de curseur de ce projet n'est pas implémentée par la reconnaissance de l'IA, mais est implémentée par l'algorithme intégré d'opencv. Cela peut ne pas être aussi convivial pour les utilisateurs qui prennent des captures d'écran. S'il n'est pas nécessaire d'appeler la fonction ocr ou la fonction de détection de cible pendant l'utilisation, vous pouvez désactiver la fonction ocr ou det=False
ocr=False
lors de l'initialisation. désactivez la fonction de détection de cible.
Cette fonction dispose de deux implémentations d'algorithmes intégrées, qui conviennent à deux situations différentes. Veuillez vous référer aux instructions suivantes pour plus de détails.
un. Algorithme 1
Le principe de l'algorithme 1 est de calculer la position de la fosse correspondante dans l'image d'arrière-plan à travers le bord de l'image du curseur. L'image du curseur et l'image d'arrière-plan peuvent être obtenues respectivement. L'image du curseur est une image d'arrière-plan transparente.
Graphique à curseur
Image d'arrière-plan
det = dddddocr.DdddOcr(det=False, ocr=False) avec open('target.png', 'rb') comme f:target_bytes = f.read() avec open('background.png', 'rb') comme f:background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)
Étant donné que le graphique à curseur peut avoir un problème de bordure transparente, les résultats du calcul peuvent ne pas être précis. Vous devez estimer vous-même la largeur de la bordure transparente du graphique à curseur pour corriger la bbox résultante.
Astuce : Si le curseur n'a pas trop d'arrière-plan, vous pouvez ajouter le paramètre simple_target, qui est généralement une image au format jpg ou bmp.
slide = dddddocr.DdddOcr(det=False, ocr=False) avec open('target.jpg', 'rb') comme f:target_bytes = f.read() avec open('background.jpg', 'rb') comme f:background_bytes = f.read() res = slide.slide_match(target_bytes, background_bytes, simple_target=True) imprimer(res)
un. Algorithme 2
L'algorithme 2 consiste à déterminer la position de la fosse cible du curseur en comparant les différences entre les deux images.
Reportez-vous à la figure A, l'image complète avec l'ombre de la fosse cible.
Image de référence b, image complète
slide = dddddocr.DdddOcr(det=False, ocr=False)avec open('bg.jpg', 'rb') comme f:target_bytes = f.read() avec open('fullpage.jpg', 'rb') comme f:background_bytes = f.read() img = cv2.imread("bg.jpg") res = slide.slide_comparison(target_bytes, background_bytes)print(res)
Afin de fournir un contrôle des résultats OCR et une limitation de la portée plus flexibles, le projet prend en charge la limitation de la portée des résultats OCR.
Vous pouvez passer probability=True
lors de l'appel de la méthode classification
. À ce stade, classification
renverra la probabilité de l'intégralité de la table de caractères. Bien entendu, vous pouvez également définir la plage de caractères de sortie via set_ranges
pour limiter le résultat. résultats.
Ⅰ. La méthode set_ranges
limite les caractères de retour à renvoyer
Cette méthode accepte 1 paramètre. Si l'entrée est de type int, il s'agit d'une limite de jeu de caractères intégrée, et si le type de chaîne est un jeu de caractères personnalisé,
S'il est de type int, veuillez vous référer au tableau suivant
Valeur du paramètre | importance |
---|---|
0 | Entier pur 0-9 |
1 | Az anglais pur en minuscules |
2 | Anglais majuscule pur AZ |
3 | Anglais minuscule az + anglais majuscule AZ |
4 | Anglais minuscule az + entier 0-9 |
5 | Majuscules anglais AZ + entier 0-9 |
6 | Minuscule anglais az + majuscule anglais AZ + entier 0-9 |
7 | Bibliothèque de caractères par défaut - minuscule anglais az - majuscule anglais AZ - entier 0-9 |
S'il s'agit d'un type de chaîne, veuillez transmettre un texte qui ne contient pas d'espaces. Chaque caractère est un mot candidat, tel que : "0123456789+-x/=""
import ddddocrocr = ddddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(image, probabilité=True )s = ""pour i dans le résultat['probabilité']:s += résultat['charsets'][i.index(max(i))]print(s)
Ce projet prend en charge l'importation de modèles formés personnalisés à partir de dddd_trainer. Le code d'importation de référence est.
import ddddocrocr = ddddocr.DdddOcr(det=False, ocr=False, import_onnx_path="myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx", charsets_path="charsets.json")avec open('test.jpg ', 'rb') comme f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)
Ce projet utilise Git pour la gestion des versions. Vous pouvez voir les versions actuellement disponibles dans le référentiel.
Apportez votre jeune frère OCR, une solution globale pour obtenir des codes de vérification de réseau localement en utilisant du VBA pur
version rouille dddddocr
Version modifiée de captcha-killer
Former un modèle CAPTCHA alphanumérique et identifier les appels de déploiement via ddddocr
...
Bienvenue pour soumettre d'autres excellents cas ou tutoriels. Vous pouvez directement créer un nouveau titre de numéro commençant par [Soumission] et joindre un lien vers le site de tutoriel public. Je choisirai d'afficher le fichier Lisez-moi en fonction du contenu de l'article, qui est relativement. non répétitif ou a un contenu clé Merci à tous mon ami ~.
Si vous avez trop d'amis, vous ne pourrez peut-être pas réussir. Si vous avez des questions, vous pouvez communiquer sur le sujet.
Ce projet est sous licence MIT, veuillez consulter LICENCE pour plus de détails