DdddOcr ist eine Zusammenarbeit zwischen dem Autor und kerlomz. Es generiert große Mengen zufälliger Daten und führt kein tiefes Netzwerktraining durch. Die Wirkung der Verwendung dieser Bibliothek hängt möglicherweise vollständig von der Metaphysik ab identifizierbar.
DdddOcr, das Konzept der minimalen Abhängigkeit, minimiert die Benutzerkonfigurations- und Nutzungskosten und hofft, jedem Tester ein angenehmes Erlebnis zu bieten
Projektadresse: Klicken Sie hier zum Senden
Eine benutzerfreundliche universelle Python-Bibliothek zur Captcha-Erkennung
Entdecken Sie die Dokumentation zu diesem Projekt »
· Fehler melden · Neue Funktionen vorschlagen
Sponsoringpartner
Leitfaden „Erste Schritte“.
Umweltunterstützung
Installationsschritte
Beschreibung des Dateiverzeichnisses
Projektbezogene Unterstützung
Nutzen Sie die Dokumentation
Grundlegende OCR-Erkennungsfähigkeit
Zielerkennungsfunktion
Slider-Erkennung
OCR-Wahrscheinlichkeitsausgabe
Import eines benutzerdefinierten OCR-Trainingsmodells
Versionskontrolle
Verwandte empfohlene Artikel oder Projekte
Autor
Spenden
Sterngeschichte
Sponsoringpartner | Gründe für die Empfehlung | |
---|---|---|
JaCaptcha | Google reCaptcha-Bestätigungscode/hCaptcha-Bestätigungscode/funCaptcha-Bestätigungscode kommerzielle Identifizierungsschnittstelle Klicken Sie mich direkt zu VIP4 | |
Superadler | Das weltweit führende Unternehmen für intelligente Bildklassifizierung und -erkennung, sicher, genau, effizient, stabil, offen, mit einem starken Technik- und Verifizierungsteam, das große Parallelität unterstützt. 7*24h Auftragsfortschrittsverwaltung | |
Malenia | Malenia-Proxy-IP-Gateway-Plattform/Proxy-IP-Verteilungssoftware auf Unternehmensebene | |
Nimbus VPS | 50 % Rabatt für den ersten Monat der Registrierung | Zhejiang-Knoten niedriger Preis und große Bandbreite, 100 Mio. 30 Yuan pro Monat |
System | CPU | GPU | Maximal unterstützte py-Version | Bemerkung |
---|---|---|---|---|
Windows 64-Bit | √ | √ | 3.12 | Bei einigen Windows-Versionen muss die VC-Laufzeitbibliothek installiert werden |
Windows 32-Bit | × | × | - | |
Linux64/ARM64 | √ | √ | 3.12 | |
Linux 32 | × | × | - | |
Macos X64 | √ | √ | 3.12 | M1/M2/M3...Chip-Referenz #67 |
i. Von Pypi installieren
pip install dddddocr
ii. Von der Quelle installieren
Git-Klon https://github.com/sml2h3/ddddocr.gitcd ddddocr Python-Setup.py
Bitte importieren Sie dddddocr nicht direkt in das Stammverzeichnis des dddddocr-Projekts . Stellen Sie sicher, dass der Verzeichnisname Ihres Entwicklungsprojekts nicht dddddocr lautet.
z.B:
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
Dieses Projekt basiert auf den Trainingsergebnissen von dddd_trainer. Die zugrunde liegende Argumentation von dddddocr basiert auf onnxruntime. Daher hängt die maximale Kompatibilität und Python-Versionsunterstützung dieses Projekts hauptsächlich von onnxruntime ab.
Es wird hauptsächlich zur Identifizierung einzelner Textzeilen verwendet, dh der Textteil nimmt den Hauptteil des Bildes ein, z. B. allgemeine englische und numerische Verifizierungscodes usw. Dieses Projekt kann Chinesisch und Englisch (zufälliger Fall oder Fall durch Einstellung) erkennen Ergebnisbereich), Zahlen und einige Sonderzeichen.
# example.pyimport ddddocrocr = ddddocr.DdddOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
In dieser Bibliothek sind zwei Sätze von OCR-Modellen integriert. Sie werden standardmäßig nicht automatisch umgeschaltet. Sie müssen beim Initialisieren von ddddocr umschalten.
# example.pyimport ddddocrocr = ddddocr.DdddOcr(beta=True) # Wechseln Sie zum zweiten Satz des OCR-Modells image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( Ergebnis)
Tipps zur Erkennungsunterstützung für einige transparente schwarze Bilder im PNG-Format: classification
verwendet den Parameter png_fix
, der Standardwert ist False
ocr.classification(image, png_fix=True)
Beachten
Zuvor habe ich festgestellt, dass viele Leute ddddocr jedes Mal neu initialisieren, wenn OCR erkannt wird, ocr = ddddocr.DdddOcr()
Initialisierung und Die erste Erkennungsgeschwindigkeit nach der Initialisierung ist sehr langsam.
Referenzbeispielbild
Einschließlich, aber nicht beschränkt auf die folgenden Bilder
Es wird hauptsächlich verwendet, um die mögliche Position des Zielobjekts im Bild schnell zu erkennen. Da es sich bei dem erkannten Ziel nicht unbedingt um Text handelt, liefert diese Funktion nur die Bbox-Position des Ziels (bei der Zielerkennung verwenden wir normalerweise Bbox (Begrenzungsrahmen, Die Abkürzung). ist bbox) zur Beschreibung der Zielposition. Bbox ist ein rechteckiges Feld, das durch die x- und y-Achsenkoordinaten der oberen linken Ecke des Rechtecks und die x- und y-Achsenkoordinaten der unteren rechten Ecke bestimmt werden kann.
Wenn die OCR-Funktion während der Verwendung nicht aufgerufen werden muss, können Sie die OCR-Funktion deaktivieren, indem Sie während der Initialisierung den Parameter ocr=False
übergeben. Um die Zielerkennung zu aktivieren, müssen Sie den Parameter det=True
importiere ddddocrimport cv2det = ddddocr.DdddOcr(det=True)mit open("test.jpg", 'rb') als f:image = f.read()bboxes = det.detection(image)print(bboxes)im = cv2 .imread("test.jpg")für bbox in bboxes:x1, y1, x2, y2 = bboxim = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thick=2)cv2.imwrite("result.jpg", im)
Referenzbeispielbild
Einschließlich, aber nicht beschränkt auf die folgenden Bilder
Die Slider-Erkennungsfunktion dieses Projekts wird nicht durch die KI-Erkennung implementiert, sondern durch den integrierten Algorithmus von opencv. Es ist möglicherweise nicht so benutzerfreundlich für Benutzer, die Screenshots machen. Wenn während der Verwendung keine Notwendigkeit besteht, die OCR-Funktion oder die Zielerkennungsfunktion aufzurufen, können Sie die OCR-Funktion oder det=False
ocr=False
Schalten Sie die Zielerkennungsfunktion aus.
Diese Funktion verfügt über zwei integrierte Algorithmusimplementierungen, die für zwei verschiedene Situationen geeignet sind. Einzelheiten finden Sie in den folgenden Anweisungen.
a. Algorithmus 1
Das Prinzip von Algorithmus 1 besteht darin, die entsprechende Pit-Position im Hintergrundbild durch die Kante des Slider-Bildes zu berechnen. Das Slider-Bild ist ein transparentes Hintergrundbild.
Schiebediagramm
Hintergrundbild
det = dddddocr.DdddOcr(det=False, ocr=False) mit open('target.png', 'rb') als f:target_bytes = f.read() mit open('background.png', 'rb') as f:background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)
Da das Schieberegler-Diagramm möglicherweise ein Problem mit dem transparenten Rand aufweist, sind die Berechnungsergebnisse möglicherweise nicht genau. Sie müssen die Breite des transparenten Rahmens des Schieberegler-Diagramms selbst schätzen, um die resultierende BBox zu korrigieren.
Tipp: Wenn der Slider nicht zu viel Hintergrund hat, können Sie den Parameter simple_target hinzufügen, bei dem es sich normalerweise um ein Bild im JPG- oder BMP-Format handelt.
slide = dddddocr.DdddOcr(det=False, ocr=False) mit open('target.jpg', 'rb') als f:target_bytes = f.read() mit open('background.jpg', 'rb') als f:background_bytes = f.read() res = slide.slide_match(target_bytes, background_bytes, simple_target=True) drucken(res)
a. Algorithmus 2
Algorithmus 2 besteht darin, die Position der Zielgrube des Schiebereglers durch Vergleich der Unterschiede zwischen den beiden Bildern zu bestimmen.
Siehe Abbildung A, das vollständige Bild mit dem Schatten der Zielgrube.
Referenzbild b, Vollbild
slide = dddddocr.DdddOcr(det=False, ocr=False)mit open('bg.jpg', 'rb') als f:target_bytes = f.read() mit open('fullpage.jpg', 'rb') als f:background_bytes = f.read() img = cv2.imread("bg.jpg") res = slide.slide_comparison(target_bytes, background_bytes)print(res)
Um eine flexiblere OCR-Ergebniskontrolle und Umfangsbegrenzung zu ermöglichen, unterstützt das Projekt die Umfangsbegrenzung von OCR-Ergebnissen.
Sie können beim Aufruf der classification
probability=True
übergeben. Zu diesem Zeitpunkt gibt classification
die Wahrscheinlichkeit der gesamten Zeichentabelle zurück. Natürlich können Sie den ausgegebenen Zeichenbereich auch über set_ranges
festlegen Ergebnisse.
Ⅰ. Die set_ranges
-Methode begrenzt die zurückzugebenden Rückgabezeichen
Diese Methode akzeptiert 1 Parameter. Wenn die Eingabe ein int-Typ ist, handelt es sich um eine integrierte Zeichensatzbeschränkung, und wenn der Zeichenfolgentyp ein benutzerdefinierter Zeichensatz ist, gilt:
Wenn es sich um einen int-Typ handelt, sehen Sie sich bitte die folgende Tabelle an
Parameterwert | Bedeutung |
---|---|
0 | Reine Ganzzahl 0-9 |
1 | Reines Englisch in Kleinbuchstaben az |
2 | Reiner englischer Großbuchstabe AZ |
3 | Kleinbuchstabe Englisch az + Großbuchstabe Englisch AZ |
4 | Englisches Kleinbuchstabe az + Ganzzahl 0-9 |
5 | Englisches Großbuchstabe AZ + Ganzzahl 0-9 |
6 | Kleinbuchstabe Englisch az + Großbuchstabe Englisch AZ + Ganzzahl 0-9 |
7 | Standardzeichenbibliothek – Kleinbuchstaben Englisch az – Großbuchstaben Englisch AZ – Ganzzahl 0–9 |
Wenn es sich um einen Zeichenfolgentyp handelt, übergeben Sie bitte einen Text, der keine Leerzeichen enthält. Jedes Zeichen darin ist ein Kandidatenwort, wie zum Beispiel: "0123456789+-x/=""
import ddddocrocr = ddddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(image, wahrscheinlichkeit=True )s = ""for i in result['probability']:s += result['charsets'][i.index(max(i))]print(s)
Dieses Projekt unterstützt den Import benutzerdefinierter trainierter Modelle von dddd_trainer. Der Referenzimportcode lautet
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") mit open('test.jpg). ', 'rb') als f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)
Dieses Projekt verwendet Git für die Versionsverwaltung. Die aktuell verfügbaren Versionen können Sie im Repository sehen.
Bringen Sie die OCR Ihres jüngeren Bruders mit, eine Gesamtlösung zum lokalen Abrufen von Netzwerkverifizierungscodes mithilfe von reinem VBA
dddddocr Rostversion
Modifizierte Version des Captcha-Killers
Trainieren Sie ein alphanumerisches CAPTCHA-Modell und identifizieren Sie Bereitstellungsaufrufe über ddddocr
...
Willkommen, um weitere hervorragende Fälle oder Tutorials einzureichen. Sie können direkt einen neuen Ausgabetitel erstellen, der mit [Einreichung] beginnt, und einen Link zur öffentlichen Tutorial-Site anhängen. Ich werde die Readme-Datei basierend auf dem Inhalt des Artikels anzeigen Nicht repetitiv oder hat Schlüsselinhalte. Vielen Dank, Freund
Wenn Sie zu viele Freunde haben, können Sie möglicherweise nicht bestehen. Wenn Sie Fragen haben, können Sie diese in der Ausgabe mitteilen.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie unter LIZENZ