π ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅: ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ΠΠ»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π½Π° ΠΠΈΡΠΎΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pytesseract Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenCV. ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΠ΅ΠΊΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
import cv2
import pytesseract
# ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ
image = cv2.imread('captcha.png')
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΠΎΠ΅
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΡΠΎΠ³ Π΄Π»Ρ Π±ΠΈΠ½Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pytesseract Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°
captcha_text = pytesseract.image_to_string(binary)
# ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ
print(captcha_text)
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ pytesseract.image_to_string() Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΏΡΠΈ. ΠΠ΅ΡΠ΅Π΄ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ΠΌ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΡΠΎΠ³ Π΄Π»Ρ Π±ΠΈΠ½Π°ΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ΅ΠΊΡΡ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΡ ΡΡΠ°ΡΡΡ, Π³Π΄Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠ°ΠΏΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ Π΄Π»Ρ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΎΡ Π»ΡΠ΄Π΅ΠΉ. ΠΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ ΠΈΠ»ΠΈ ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠ΅Π³ΡΠ°Π΄Ρ.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Ρ ΠΎΠ±Ρ ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΏΡΠΈ. ΠΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ - ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pytesseract, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OCR (ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) Tesseract.
import pytesseract
from PIL import Image
image_path = 'captcha_image.png'
captcha_image = Image.open(image_path)
captcha_text = pytesseract.image_to_string(captcha_image)
print("Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΠΏΡΠ΅:", captcha_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pytesseract Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Tesseract. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ , Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install pytesseract pillow
sudo apt install tesseract-ocr
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π²Π΅Π±-ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ AntiCaptcha ΠΈΠ»ΠΈ 2Captcha. ΠΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ API Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
import requests
def solve_captcha(image_path):
api_key = 'ΠΠ°Ρ API-ΠΊΠ»ΡΡ'
post_url = 'https://api.anti-captcha.com/image-to-text'
with open(image_path, 'rb') as image_file:
image_data = image_file.read()
response = requests.post(post_url, data=image_data, headers={
'Content-type': 'application/octet-stream',
'Accept': 'application/json',
'Authorization': f'Bearer {api_key}'
})
if response.ok:
result = response.json()
captcha_text = result['text']
return captcha_text
else:
return None
# ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
captcha_text = solve_captcha('captcha_image.png')
print("Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΠΏΡΠ΅:", captcha_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π· API ΡΠ΅ΡΠ²ΠΈΡΠ° AntiCaptcha, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π°Ρ API-ΠΊΠ»ΡΡ. Π ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡ Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΏΡΠΈ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ `'ΠΠ°Ρ API-ΠΊΠ»ΡΡ'` Π½Π° Π²Π°Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ API-ΠΊΠ»ΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ΅.
3. ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΈ
Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΏΡΡ. ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ Π·Π½Π°Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΠΊΠ°ΠΏΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅Π΅ ΡΠ΅ΠΊΡΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ TensorFlow Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ:
import tensorflow as tf
# ΠΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ
# ...
# ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
captcha_image = load_image('captcha_image.png')
captcha_text = neural_network.predict(captcha_image)
print("Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΠΏΡΠ΅:", captcha_text)
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ.
4. ΠΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (OCR), ΠΎΠ±Ρ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΡΠΊΡΠΈΠΏΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Selenium), Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ API Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Ρ. Π΄. ΠΡΠ±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π²Π°ΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄ ΠΊΠ°ΠΏΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ². ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π·Π°ΠΊΠΎΠ½Π½ΠΎΡΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Π£Π΄Π°ΡΠΈ Π² ΠΎΠ±Ρ ΠΎΠ΄Π΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π²Π°ΡΠΈΡ Π·Π°Π΄Π°Ρ!