DdddOcr adalah kolaborasi antara penulis dan kerlomz. Ini menghasilkan sejumlah besar data acak dan melakukan pelatihan jaringan yang mendalam. Ini mungkin tidak dibuat untuk produsen kode verifikasi mana pun. Efek penggunaan perpustakaan ini sepenuhnya bergantung pada metafisika dapat diidentifikasi.
DdddOcr, konsep ketergantungan minimal, meminimalkan konfigurasi pengguna dan biaya penggunaan, dengan harapan dapat menghadirkan pengalaman yang nyaman bagi setiap penguji
Alamat proyek: Klik di sini untuk mengirim
Pustaka python pengenalan captcha universal yang mudah digunakan
Jelajahi dokumentasi untuk proyek ini »
· Laporkan bug · Usulkan fitur baru
Mitra sponsor
Panduan Memulai
Dukungan lingkungan
Langkah-langkah instalasi
Deskripsi direktori file
Dukungan yang mendasari proyek
Gunakan dokumentasi
Kemampuan pengenalan OCR dasar
Kemampuan deteksi target
Deteksi penggeser
Keluaran probabilitas OCR
Impor model pelatihan OCR khusus
kontrol versi
Artikel atau proyek terkait yang direkomendasikan
pengarang
Menyumbangkan
Sejarah bintang
Mitra sponsor | Alasan rekomendasi | |
---|---|---|
YaCaptcha | Kode verifikasi Google reCaptcha/kode verifikasi hCaptcha/kode verifikasi funCaptcha antarmuka identifikasi kelas komersial klik saya langsung ke VIP4 | |
elang super | Bisnis klasifikasi dan pengenalan gambar cerdas terkemuka di dunia, aman, akurat, efisien, stabil dan terbuka, dengan tim teknis dan verifikasi yang kuat yang mendukung konkurensi besar. Manajemen kemajuan pekerjaan 7*24 jam | |
Malenia | Platform gateway IP proxy tingkat perusahaan Malenia/perangkat lunak distribusi IP proxy | |
VPS Nimbus | Diskon 50% untuk bulan pertama pendaftaran | Node Zhejiang harga rendah dan bandwidth besar, 100 juta 30 yuan per bulan |
sistem | CPU | GPU | Versi py yang didukung maksimum | Komentar |
---|---|---|---|---|
jendela 64bit | √ | √ | 3.12 | Beberapa versi windows perlu menginstal perpustakaan runtime vc |
Windows 32-bit | × | × | - | |
Linux64/ARM64 | √ | √ | 3.12 | |
Linux 32 | × | × | - | |
Maco X64 | √ | √ | 3.12 | M1/M2/M3...Referensi Chip #67 |
i.Instal dari pypi
pip instal dddddocr
ii. Instal dari sumber
git clone https://github.com/sml2h3/ddddocr.gitcd ddddocr pengaturan python.py
Harap jangan mengimpor ddddocr secara langsung di direktori akar proyek dddddocr . Harap pastikan bahwa nama direktori proyek pengembangan Anda bukan dddddocr. Ini adalah dasar yang masuk akal.
misalnya:
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
Proyek ini didasarkan pada hasil pelatihan dddd_trainer. Kerangka pelatihan yang mendasarinya adalah pytorch. Alasan yang mendasari dddddocr bergantung pada onnxruntime. Oleh karena itu, kompatibilitas maksimum dan dukungan versi python dari proyek ini terutama bergantung pada onnxruntime.
Hal ini terutama digunakan untuk mengidentifikasi satu baris teks, yaitu bagian teks menempati bagian utama gambar, seperti bahasa Inggris umum dan kode verifikasi numerik, dll. Proyek ini dapat mengenali bahasa Mandarin, Inggris (kasus atau kasus acak dengan pengaturan rentang hasil), angka dan beberapa karakter khusus.
# example.pyimport ddddocrocr = ddddocr.DdddOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
Ada dua set model OCR yang dibangun di perpustakaan ini. Mereka tidak akan beralih secara otomatis secara default.
# example.pyimport ddddocrocr = ddddocr.DdddOcr(beta=True) # Beralih ke set kedua model ocr image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( hasil)
Tips dukungan pengenalan untuk beberapa gambar format png hitam transparan: metode classification
menggunakan parameter png_fix
, defaultnya adalah False
ocr.klasifikasi(gambar, png_fix=Benar)
Melihat
Sebelumnya saya menemukan bahwa banyak orang suka menginisialisasi ulang ddddocr setiap kali OCR dikenali, yaitu mengeksekusi ocr = ddddocr.DdddOcr()
setiap kali. Ini salah dan Kecepatan pengenalan pertama setelah inisialisasi sangat lambat.
Gambar contoh referensi
Termasuk namun tidak terbatas pada gambar berikut
Hal ini terutama digunakan untuk mendeteksi dengan cepat kemungkinan posisi subjek target dalam gambar. Karena target yang terdeteksi belum tentu berupa teks, fungsi ini hanya menyediakan posisi bbox target (dalam deteksi target, kami biasanya menggunakan bbox (kotak pembatas, Singkatannya). adalah bbox) untuk menggambarkan posisi target. bbox adalah kotak berbentuk persegi panjang, yang dapat ditentukan dengan koordinat sumbu x dan y sudut kiri atas persegi panjang dan koordinat sumbu x dan y sudut kanan bawah)
Jika tidak perlu memanggil fungsi ocr saat digunakan, Anda dapat mematikan fungsi ocr dengan meneruskan parameter ocr=False
selama inisialisasi. Untuk mengaktifkan deteksi target, Anda harus meneruskan parameter det=True
import ddddocrimport cv2det = ddddocr.DdddOcr(det=True)dengan open("test.jpg", 'rb') as f:image = f.read()bboxes = det.detection(image)print(bboxes)im = cv2 .imread("test.jpg") untuk bbox di bbox:x1, y1, x2, y2 = bboxim = cv2.persegi panjang(im, (x1, y1), (x2, y2), warna=(0, 0, 255), ketebalan=2)cv2.imwrite("hasil.jpg", im)
Gambar contoh referensi
Termasuk namun tidak terbatas pada gambar berikut
Fungsi deteksi penggeser pada proyek ini tidak diimplementasikan dengan pengenalan AI, tetapi diimplementasikan oleh algoritma bawaan opencv. Ini mungkin tidak ramah bagi pengguna yang mengambil tangkapan layar. Jika tidak perlu memanggil fungsi ocr atau fungsi deteksi target saat digunakan, Anda dapat mematikan fungsi ocr atau det=False
ocr=False
selama inisialisasi ke matikan fungsi deteksi target.
Fungsi ini memiliki dua implementasi algoritme bawaan, yang cocok untuk dua situasi berbeda. Silakan lihat petunjuk berikut untuk detailnya.
sebuah.Algoritma 1
Prinsip Algoritma 1 adalah menghitung posisi lubang yang sesuai pada gambar latar melalui tepi gambar penggeser. Gambar penggeser dan gambar latar dapat diperoleh masing-masing. Gambar penggeser adalah gambar latar transparan.
Bagan penggeser
Gambar latar belakang
det = dddddocr.DdddOcr(det=False, ocr=False) dengan open('target.png', 'rb') sebagai f:target_bytes = f.read() dengan open('background.png', 'rb') sebagai f:background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)
Karena diagram penggeser mungkin memiliki masalah batas transparan, hasil perhitungan mungkin tidak akurat. Anda perlu memperkirakan sendiri lebar batas transparan diagram penggeser untuk memperbaiki bbox.
Tip: Jika penggeser tidak memiliki terlalu banyak latar belakang, Anda dapat menambahkan parameter simple_target, yang biasanya berupa gambar dalam format jpg atau bmp.
slide = dddddocr.DdddOcr(det=False, ocr=False) dengan open('target.jpg', 'rb') sebagai f:target_bytes = f.read() dengan open('background.jpg', 'rb') sebagai f:background_bytes = f.read() res = slide.slide_match(target_bytes, background_bytes, simple_target=True) cetak(res)
sebuah.Algoritma 2
Algoritma 2 adalah menentukan posisi lubang target slider dengan membandingkan perbedaan kedua gambar.
Lihat Gambar A, gambar lengkap dengan bayangan lubang target.
Gambar referensi b, gambar lengkap
slide = dddddocr.DdddOcr(det=False, ocr=False)dengan open('bg.jpg', 'rb') sebagai f:target_bytes = f.read() dengan open('fullpage.jpg', 'rb') sebagai f:background_bytes = f.read() img = cv2.imread("bg.jpg") res = slide.slide_comparison(target_bytes, background_bytes)print(res)
Untuk memberikan kontrol hasil OCR yang lebih fleksibel dan batasan cakupan, proyek mendukung batasan cakupan hasil OCR.
Anda dapat meneruskan probability=True
saat memanggil metode classification
. Saat ini, metode classification
akan mengembalikan probabilitas seluruh tabel karakter. Tentu saja, Anda juga dapat mengatur rentang karakter keluaran melalui metode set_ranges
untuk membatasi pengembalian hasil.
Ⅰ. Metode set_ranges
membatasi karakter yang dikembalikan
Metode ini menerima 1 parameter. Jika inputnya bertipe int, itu adalah batas kumpulan karakter bawaan, dan jika tipe stringnya adalah kumpulan karakter khusus,
Jika bertipe int, silakan lihat tabel berikut
Nilai parameter | makna |
---|---|
0 | Bilangan bulat murni 0-9 |
1 | Huruf kecil murni bahasa Inggris az |
2 | Huruf besar murni Bahasa Inggris AZ |
3 | Huruf Kecil Bahasa Inggris az + Huruf Besar Bahasa Inggris AZ |
4 | Huruf kecil bahasa Inggris az + bilangan bulat 0-9 |
5 | Huruf besar Bahasa Inggris AZ + bilangan bulat 0-9 |
6 | Huruf kecil bahasa Inggris az + huruf besar bahasa Inggris AZ + bilangan bulat 0-9 |
7 | Pustaka karakter default - huruf kecil Bahasa Inggris az - huruf besar Bahasa Inggris AZ - bilangan bulat 0-9 |
Jika bertipe string, harap masukkan teks yang tidak mengandung spasi. Setiap karakter di dalamnya merupakan kandidat kata, misalnya: "0123456789+-x/=""
impor ddddocrocr = ddddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(image, probabilitas=True )s = ""untuk saya dalam hasil['probabilitas']:s += hasil['rangkaian karakter'][i.index(maks(i))]cetakan
Proyek ini mendukung impor model terlatih yang disesuaikan dari dddd_trainer. Kode impor referensinya adalah
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") dengan open('test.jpg ', 'rb') sebagai f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)
Proyek ini menggunakan Git untuk manajemen versi. Anda dapat melihat versi yang tersedia saat ini di repositori.
Hadirkan adik Anda OCR, solusi menyeluruh untuk mendapatkan kode verifikasi jaringan secara lokal menggunakan VBA murni
versi karat dddddocr
Versi modifikasi dari pembunuh captcha
Latih model CAPTCHA alfanumerik dan identifikasi panggilan penerapan melalui ddddocr
...
Selamat mengirimkan kasus atau tutorial yang lebih bagus. Anda dapat langsung membuat judul terbitan baru yang dimulai dengan [Submission] dan melampirkan link ke situs tutorial publik. Saya akan memilih untuk menampilkan readme berdasarkan konten artikel, yang relatif non- berulang-ulang atau memiliki konten utama. Terima kasih semuanya
Jika Anda memiliki terlalu banyak teman, Anda mungkin tidak dapat lulus. Jika Anda memiliki pertanyaan, Anda dapat berkomunikasi dalam masalah tersebut.
Proyek ini dilisensikan di bawah lisensi MIT, silakan lihat LISENSI untuk detailnya