• 大小: 66MB
    文件类型: .gz
    金币: 2
    下载: 2 次
    发布日期: 2021-12-27
  • 语言: 其他
  • 标签: 文字定位  

资源简介

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)])+‘\r\n‘
            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]

评论

共有 条评论

相关资源