用于OCR的图像检测与分割

2024-06-09 16:30:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试OCR标准表格(它们被前后扫描)

enter image description hereenter image description here

我只想OCR扫描的第二张图像(带有文本信息的图像)——有没有办法检测和分割它们,并且只处理正确的图像?对不起,如果我错过了一些重要的东西,就开始吧

 import pytesseract as tess
    import os
    from PIL import Image
    import pandas as pd
    import tesserocr



    path = "/Users/oliviervandhuynslager/PycharmProjects/OCR/DC_SCANS_TEST" ##path to directory (folder) where the images are located

    count = 0
    fileName = [] #create empty list that will contain the original filenames
    fullText = [] #create empty list to store the OCR results per file
    for imageName in os.listdir("/Users/oliviervandhuynslager/PycharmProjects/OCR/DC_SCANS_TEST"):
        count = count + 1
        fileName.append(imageName)
        fileName.sort()#generate list from texts.
    #%%
     # APPEND (OCR) text from images TO LIST fullText
    for imageName in os.listdir("/Users/oliviervandhuynslager/PycharmProjects/OCR/DC_SCANS_TEST"):
        inputPath = os.path.join(path, imageName)
        img = Image.open(inputPath)
        text = tess.image_to_string(img, lang="eng")
        fullText.append(text)

Tags: thetopathfromtest图像importos
1条回答
网友
1楼 · 发布于 2024-06-09 16:30:17

以下是演示图像的工作示例:

import cv2
import numpy as np
import pytesseract

pytesseract.pytesseract.tesseract_cmd=r"C:\Program Files\Tesseract-OCR\tesseract.exe"

img = cv2.imread("BFezy.png", 0)

kernel = np.ones((25, 25), np.uint8)
eroded = cv2.erode(img, kernel, iterations=2)
dilated = cv2.dilate(eroded, kernel, iterations=1)
thresholded = cv2.threshold(dilated, 150, 255, cv2.THRESH_BINARY_INV)[1]
countours = cv2.findContours(th, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[0]
if len(countours) == 2:
    x, y, w, h = cv2.boundingRect(countours[0])
    crop = img[y:h + y, x:w + x]
    text = pytesseract.image_to_string(crop)
    print(text)

相关问题 更多 >