Plans
Reconnaissez d'abord les caractères individuels. (En utilisant haar ou YOLO?)
Couvrez chaque caractère avec Rectangle et effectuez le traitement suivant.
Dans la zone entourée de Rectangle, la valeur de luminosité est tracée en 3D, et elle est modélisée en 3D afin que chaque caractère puisse être reconnu avec précision en fonction de l'image lors de la rotation.
# Modules
from pathlib import Path
from skimage import io
import matplotlib.pyplot as plt
import cv2
import numpy as np
# Putting some image files of any documents under dataset
p = Path("../dataset")
paths = list(p.glob("**/*.jpg "))
data1 = io.imread(paths[0])
# Using tile strategy to evaluate the recognition accuracy.
mini = data1[1200:1400, 800:1000, 0]
plt.imshow(mini)
print("Showing data to be processed...")
plt.show()
Switch1
# Highlighting the target
## Lazy normalization
if mini.max() > 256:
subject = np.true_divide(mini, 256).astype("uint8")
else:
subject = mini.astype("uint8")
## Creating a mask to remove noise.
mask = (subject < 200)
masked = mask * subject
## Distance transform
distmap = cv2.distanceTransform(masked,1,3)
## Creating all zero matrix, which size equal to data
featuremap = distmap*0
## Deciding kernel size to convolve.
ksize = 20
## Detecting edge with convolution...
for x in range(ksize,distmap.shape[0]-ksize*2):
for y in range(ksize,distmap.shape[1]-ksize*2):
###Les coordonnées avec la plus grande valeur dans le noyau sont affichées sous la forme 1 dans la carte des caractéristiques....
### max-Le traitement est proche de la mise en commun. Max-La mise en commun et la normalisation sont menées en même temps.
if distmap[x,y]>0 and distmap[x,y]==np.max(distmap[x-ksize:x+ksize,y-ksize:y+ksize]):
featuremap[x,y]=1
### defining feature_dilated for imshow
feature_dilated = cv2.dilate(featuremap, (50, 50))
print("Masked image is ... : ")
plt.imshow(masked)
plt.show()
plt.imshow(feature_dilated)
print("Feature shape is ... : " + str(feature_dilated.shape))
plt.show()
Feature_mask = (feature_dilated > 0)
Cropped = masked * Feature_mask
plt.imshow(Cropped)
plt.show()
Switch2
Laissez Public-OCR-server traiter le fichier image coupé par Tile-strategy.
Laissez un serveur tel que MNIST traiter le fichier image coupé pour la reconnaissance d'un seul caractère. (Après avoir effectué la vectorisation One-hot, recadrez un seul caractère à partir de cette coordonnée.)