Tensorflow文字定位、tesseract识别


Tensorflow文字定位、tesseract识别
资源截图
代码片段和文件信息
# -*- coding: utf-8 -*-
from __future__ import print_function
import tensorflow as tf
import numpy as np
import os sys cv2
import glob
import pytesseract

import shutil
# sys.path.append(os.getcwd())
from lib.networks.factory import get_network
from lib.fast_rcnn.config import cfgcfg_from_file
from lib.fast_rcnn.test import test_ctpn
from lib.utils.timer import Timer
from lib.text_connector.detectors import TextDetector
from lib.text_connector.text_connect_cfg import Config as TextLineCfg

from PIL import ImageImageDrawImageFont

import xlwt

def resize_im(im scale max_scale=None):
    f=float(scale)/min(im.shape[0] im.shape[1])
    if max_scale!=None and f*max(im.shape[0] im.shape[1])>max_scale:
        f=float(max_scale)/max(im.shape[0] im.shape[1])
    return cv2.resize(im NoneNone fx=f fy=finterpolation=cv2.INTER_LINEAR) f

def draw_boxes(imgimage_nameboxesscale):
    rects = []
    base_name = image_name.split(‘/‘)[-1]
    with open(‘./train/data/results/‘ + ‘res_{}.txt‘.format(base_name.split(‘.‘)[0]) ‘w‘) as f:
        for box in boxes:
            if np.linalg.norm(box[0] - box[1]) < 5 or np.linalg.norm(box[3] - box[0]) < 5:
                continue
            if box[8] >= 0.9:
                color = (0 255 0)
            elif box[8] >= 0.8:
                color = (255 0 0)
            cv2.line(img (int(box[0]) int(box[1])) (int(box[2]) int(box[3])) color 2)
            cv2.line(img (int(box[0]) int(box[1])) (int(box[4]) int(box[5])) color 2)
            cv2.line(img (int(box[6]) int(box[7])) (int(box[2]) int(box[3])) color 2)
            cv2.line(img (int(box[4]) int(box[5])) (int(box[6]) int(box[7])) color 2)

            min_x = min(int(box[0]/scale)int(box[2]/scale)int(box[4]/scale)int(box[6]/scale))
            min_y = min(int(box[1]/scale)int(box[3]/scale)int(box[5]/scale)int(box[7]/scale))
            max_x = max(int(box[0]/scale)int(box[2]/scale)int(box[4]/scale)int(box[6]/scale))
            max_y = max(int(box[1]/scale)int(box[3]/scale)int(box[5]/scale)int(box[7]/scale))

            rects.append([min_ymin_xmax_ymax_x])

            line = ‘‘.join([str(min_x)str(min_y)str(max_x)str(max_y)])+‘

            f.write(line)
    #  save img as result.jpg
    img=cv2.resize(img None None fx=1.0/scale fy=1.0/scale interpolation=cv2.INTER_LINEAR)
    cv2.imwrite(‘./result.jpg‘ img)

    rects.sort()
    return rects

def ctpn(sess net image_name):
    rects = []
    timer = Timer()
    timer.tic()

    img = cv2.imread(image_name)
    img scale = resize_im(img scale=TextLineCfg.SCALE max_scale=TextLineCfg.MAX_SCALE)
    scores boxes = test_ctpn(sess net img)

    textdetector = TextDetector()
    boxes = textdetector.detect(boxes scores[: np.newaxis] img.shape[:2])
    rects = draw_boxes(img image_name boxes scale)
    timer.toc()
    print((‘Detection took {:.3f}s for ‘
           ‘{:d} object proposals‘).format(timer.total_time boxes.shape[0]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)