Als ich nach einem Artikel suchte, der Selen verwendet, fand ich einen Artikel über die Automatisierung von Sushi. Die Methode ist grundsätzlich wie folgt ・ Geben Sie nach dem Start des Spiels weiterhin alle Tasten ein ・ Wenn Sie das Spiel starten, drücken Sie und geben Sie die von OCR erhaltene Zeichenkette ein.
Diesmal habe ich eine einfache Bildverarbeitung mit OpenCV als OCR-Teil und Vorverarbeitung versucht
Tesseract ist eine OCR-Engine. Dieses Mal werde ich diese OCR-Engine mit dem Pyocr-Modul von Python ausführen Die Installation wird mit dem folgenden Befehl abgeschlossen
$ brew install tesseract
Da es für Japanisch keine Testdaten gibt, laden Sie diese von der folgenden URL herunter https://github.com/tesseract-ocr/tessdata ↑ Laden Sie jpn.traineddata von dieser URL nach / usr / local / share / tessdata / herunter.
Führen Sie den folgenden Befehl im Terminal aus, um den Vorgang abzuschließen
$ pip3 install pyocr
$ pip3 install opencv-python
Das Testbild ist unten ↓ Trimmen
Speichern Sie die zugeschnittene Version als test.png
import cv2
import pyocr
from PIL import Image
image = "test.png "
img = cv2.imread(image)
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
res = tool.image_to_string(
Image.open("test.png ")
,lang="eng")
print(res)
Ausführungsergebnis Überhaupt nicht richtig erkannt ... Immerhin scheint eine Vorverarbeitung notwendig zu sein
Ich möchte mit OpenCV vorverarbeiten, bin aber neu bei OpenCV, also werde ich damit spielen Versuchen Sie, Ihr eigenes Symbolbild zu verarbeiten
import sys
import cv2
import pyocr
import numpy as np
from PIL import Image
image = "test_1.png "
name = "test_1"
#original
img = cv2.imread(image)
#gray
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f"1_{name}_gray.png ",img)
#goussian
img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imwrite(f"2_{name}_gaussian.png ",img)
#threshold
img = cv2.adaptiveThreshold(
img
, 255
, cv2.ADAPTIVE_THRESH_GAUSSIAN_C
, cv2.THRESH_BINARY
, 11
, 2
)
cv2.imwrite(f"3_{name}_threshold.png ",img)
Das Bild im Verarbeitungsprozess sieht so aus
OpenCV + OCR Verarbeiten Sie das in OCR verwendete Bild mit OpenCV vor und versuchen Sie es erneut mit OCR Im Folgenden wird als Vorverarbeitung Graustufen → Schwellenwertverarbeitung → Farbinversion durchgeführt.
import sys
import cv2
import pyocr
import numpy as np
from PIL import Image
image = "test.png "
name = "test"
#original
img = cv2.imread(image)
cv2.imwrite(f"1_{name}_original.png ",img)
#gray
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite(f"2_{name}_gray.png ",img)
#threshold
th = 140
img = cv2.threshold(
img
, th
, 255
, cv2.THRESH_BINARY
)[1]
cv2.imwrite(f"3_{name}_threshold_{th}.png ",img)
#bitwise
img = cv2.bitwise_not(img)
cv2.imwrite(f"4_{name}_bitwise.png ",img)
cv2.imwrite("target.png ",img)
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
res = tool.image_to_string(
Image.open("target.png ")
,lang="eng")
print(res)
Ausführungsergebnis
Es scheint, dass Sie es gut erkennen können! Diesmal ist es vorbei