tesseract에서 인식하지 못하는 쉽게 읽을 수있는 텍스트

Aug 16 2020

저는 EAST (Efficient and Accurate Scene Text Detector) 의 다음 PyTorch 구현 을 사용하여 여러 이미지의 텍스트 주위에 경계 상자를 식별하고 그렸으며 매우 잘 작동합니다!

그러나 pytesseract이러한 이미지에서 텍스트를 추출하고 문자열로 변환하기 위해 시도하고 있는 OCR의 다음 단계는 끔찍하게 실패합니다. --oem및의 가능한 모든 구성을 사용하여 다음 과 같이 매우 명확한 텍스트로 보이는 것을 감지 --psm할 수 없습니다 pytesseract.

인식 된 텍스트는 이미지 아래에 있습니다. 대비 강화를 적용하고 확장 및 침식을 시도했지만 tesseract가 텍스트를 인식하지 못합니다. 이것은 텍스트가 훨씬 더 크고 선명한 많은 이미지의 한 예일뿐입니다. 변환, 구성 또는 기타 라이브러리에 대한 제안이 도움이 될 것입니다!

업데이트 : Gaussian blur + Otso thresholding을 시도한 후, 흰색 배경에 검정색 텍스트를 얻을 수 있으며 (분명히 pytesseract에 이상적임) 스페인어도 추가 할 수 있지만 여전히 매우 평범한 텍스트를 읽을 수는 없습니다. 예 :

횡설수설로 읽습니다.

처리 된 텍스트 이미지는

사용중인 코드입니다.


img_path = './images/fesa.jpg'
img = Image.open(img_path)
boxes = detect(img, model, device)
origbw = cv2.imread(img_path, 0)

for box in boxes:
    
    box = box[:-1]
    poly = [(box[0], box[1]),(box[2], box[3]),(box[4], box[5]),(box[6], box[7])]
    x = []
    y = []

    for coord in poly:
        x.append(coord[0])
        y.append(coord[1])

    startX = int(min(x))
    startY = int(min(y))
    endX = int(max(x))
    endY = int(max(y))


    #use pre-defined bounding boxes produced by EAST to crop the original image 
    
    cropped_image = origbw[startY:endY, startX:endX]

    #contrast enhancement 

    clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8))
    res = clahe.apply(cropped_image)

    text = pytesseract.image_to_string(res, config = "-psm 12")
    
    plt.imshow(res)
    plt.show()
    print(text)

답변

1 HernánAlarcón Aug 16 2020 at 11:48

이 업데이트 된 데이터 파일을 사용하십시오 .

이 가이드 는 즉시 사용 가능한 성능을 비판합니다 (정확성에도 영향을 미칠 수 있음).

훈련 된 데이터. 작성하는 순간, Ubuntu 18.10 용 tesseract-ocr-eng APT 패키지는 손상된 훈련 데이터로 인해 끔찍한 성능을 발휘합니다.

내가 한 다음 테스트에 따르면 업데이트 된 데이터 파일을 사용하면 더 나은 결과를 얻을 수 있습니다. 이것은 내가 사용한 코드입니다.

import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open('farmacias.jpg'), lang='spa', config='--tessdata-dir ./tessdata --psm 7'))

spa.traineddata를 다운로드 했습니다 (예제 이미지에는 스페인어 단어가 ./tessdata/spa.traineddata있습니다. 맞나요?) . 결과는 다음과 같습니다.

ARMACIAS


두 번째 이미지의 경우 :

PECIALIZADA:


여기에서 "이미지를 단일 텍스트 줄로 처리"를 의미한다고 말했기 --psm 7때문에 사용 했으며 테스트 이미지에 적합하다고 생각했습니다.

에서 이 구글 Colab 당신은 내가 한 시험을 볼 수 있습니다.