资源简介
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]
评论
共有 条评论