Solved issue #115 by arkya-art · Pull Request #525 · JaidedAI/EasyOCR (original) (raw)

Hi @rkcosmos, this PR resolves issue #115. I have worked upon this and solved the issue posted by @apiszcz on Jul 11, 2020. For this purpose first of all I have created a function named readtextlang() which predicts the result in a similar fashion compared to readtext(). Then stored all the detected characters from the image within a list after that wrote two functions

Moved through each of the files and stored the characters within the file in a list. Correspondingly compared each character with the characters within the file and searched for the two most famous languages English and Chinese

 `def readtextlang(self, image, decoder = 'greedy', beamWidth= 5, batch_size = 1,\
             workers = 0, allowlist = None, blocklist = None, detail = 1,\
             rotation_info = None, paragraph = False, min_size = 20,\
             contrast_ths = 0.1,adjust_contrast = 0.5, filter_ths = 0.003,\
             text_threshold = 0.7, low_text = 0.4, link_threshold = 0.4,\
             canvas_size = 2560, mag_ratio = 1.,\
             slope_ths = 0.1, ycenter_ths = 0.5, height_ths = 0.5,\
             width_ths = 0.5, y_ths = 0.5, x_ths = 1.0, add_margin = 0.1, output_format='standard'):
    '''
    Parameters:
    image: file path or numpy-array or a byte stream object
    '''
    img, img_cv_grey = reformat_input(image)

    horizontal_list, free_list = self.detect(img, min_size, text_threshold,\
                                             low_text, link_threshold,\
                                             canvas_size, mag_ratio,\
                                             slope_ths, ycenter_ths,\
                                             height_ths,width_ths,\
                                             add_margin, False)
    # get the 1st result from hor & free list as self.detect returns a list of depth 3
    horizontal_list, free_list = horizontal_list[0], free_list[0]
    result = self.recognize(img_cv_grey, horizontal_list, free_list,\
                            decoder, beamWidth, batch_size,\
                            workers, allowlist, blocklist, detail, rotation_info,\
                            paragraph, contrast_ths, adjust_contrast,\
                            filter_ths, y_ths, x_ths, False, output_format)
   
    char = []
    directory = 'characters/'
    for i in range(len(result)):
        char.append(result[i][1])
    
    def search(arr,x):
        g = False
        for i in range(len(arr)):
            if arr[i]==x:
                g = True
                return 1
        if g == False:
            return -1
    def tupleadd(i):
        a = result[i]
        b = a + (filename[0:2],)
        return b
    
    for filename in os.listdir(directory):
        if filename.endswith(".txt"):
            with open ('characters/'+ filename,'rt',encoding="utf8") as myfile:  
                chartrs = str(myfile.read().splitlines()).replace('\n','') 
                for i in range(len(char)):
                    res = search(chartrs,char[i])
                    if res != -1:
                        if filename[0:2]=="en" or filename[0:2]=="ch":
                            print(tupleadd(i))`