Как проверить, существуют ли значения, извлеченные из изображения, уже существуют в файле TXT или CSV в Python? - PullRequest
2 голосов
/ 30 октября 2019

Я работаю над OCR, используя python с pytesseract. Поэтому именно то, что я пытаюсь сделать, - это прочитать текст на изображении, извлечь текст и сохранить извлеченный текст в файл txt или csv, используя обработку файла. Я хочу, чтобы несколько файлов были прочитаны, сохранить текст и выполнить проверку, если текст изображения, который я собираюсь прочитать и сохранить, уже существует в текстовом файле.
Вот мой код, который работает без каких-либо ошибок. Последние строки - то, что я пытался сделать, но, похоже, не работает. Может ли кто-нибудь помочь мне в этом? Заранее спасибо.

import cv2
import pytesseract,csv,re,os
from PIL import Image
from ast import literal_eval

img = pytesseract.image_to_string(Image.open("test1.png"), lang="eng")
print(img)

with open('C:\\Users\\Hasan\\Videos\\Captures\\saved.csv', "w") as outfile:
    writer = csv.writer(outfile)
    writer.writerow(img)

string = open('C:\\Users\\Hasan\\Videos\\Captures\\saved.csv').read()
new_str = re.sub('[^a-zA-z0-9\n\.]', ' ', string)
open('C:\\Users\\Hasan\\Videos\\Captures\\saved.csv', "w").write(new_str)

# f = open("saved.csv", "r")
# read = f.readline()
# print("\n" + f.read())

with open('C:\\Users\\Hasan\\Videos\\Captures\\saved.csv') as sv:
    for line in sv:
        if img in line:
            print("Data already exists")
        else:
            print("file saved successfully")

1 Ответ

3 голосов
/ 30 октября 2019

Замените '\ n' во время записи в файл CSV и уберите '\ n' из img при сравнении.

import cv2
import pytesseract,csv,re,os
from PIL import Image
from ast import literal_eval
img_path = "example_01.png"
out_csv_path = "saved.csv"
img = pytesseract.image_to_string(Image.open(img_path), lang="eng")
print(img)

with open(out_csv_path, "w") as outfile:
    writer = csv.writer(outfile)
    writer.writerow(img)

string = open(out_csv_path).read()
new_str = re.sub('[^a-zA-z0-9\. ]', '', string)
open(out_csv_path, "w").write(new_str)

# f = open("saved.csv", "r")
# read = f.readline()
# print("\n" + f.read())

with open(out_csv_path,newline='') as sv:
    img = re.sub('[^a-zA-z0-9\. ]', '', img)
    for line in sv:
        print("Line text is: {}\nExtracted Text is: {}".format(line,img))
        if img in line:
            print("Data already exists")
        else:
            print("file saved successfully")

Пример вывода:

Noisyimage
to test
Tesseract OCR
Line text is: Noisyimageto testTesseract OCR
Extracted Text is: Noisyimageto testTesseract OCR
Data already exists
...