美文网首页
python 图片识别文字

python 图片识别文字

作者: 代瑶 | 来源:发表于2021-03-19 11:33 被阅读0次

mac环境安装tesseract

1. 利用brew 安装tesseract

brew install tesseract 安装完成后执行tesseract -v

image.png

2. 下载语言包,这了我们下载中文和英文

https://raw.githubusercontent.com/tesseract-ocr/tessdata/master/eng.traineddata

https://raw.githubusercontent.com/tesseract-ocr/tessdata/master/chi_sim.traineddata

https://raw.githubusercontent.com/tesseract-ocr/tessdata/master/chi_tra.traineddata

下载完成后将traineddata 文件移动到/usr/local/Cellar/tesseract/4.1.1/share/tessdata文件夹下

image.png

tesseract --list-langs 命令查看

3. 编写代码

import pytesseract
import requests as req
import cv2
import numpy as np
from PIL import Image, ImageEnhance
from io import BytesIO

from pytesseract import Output

resize_num = 2


def parse_image_to_txt(image_url):
    response = req.get(image_url)
    img = Image.open(BytesIO(response.content))

    # 灰度转二值化
    img = img.convert('L')

    # 图像放大
    img = img.resize((img.width * int(resize_num), img.height * int(resize_num)))

    # 对比度增强
    sharpness = ImageEnhance.Contrast(img)
    img = sharpness.enhance(2)

    out_content = pytesseract.image_to_string(img, lang='chi_sim', config='--oem 3 --psm 6 --dpi 300')

    # 红圈自动标记处电话位置
    # img = cv2.cvtColor(np.asarray(img), cv2.COLOR_BGR2RGB)
    # d = pytesseract.image_to_data(img, lang='chi_sim', config='--oem 3 --psm 6 --dpi 300')
    #
    # data = {}
    # for i in range(0, len(d["text"])):
    #     if 0 < len(d['text'][i]):
    #         (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
    #         data[d['text'][i]] = ([d['left'][i], d['top'][i], d['width'][i], d['height'][i]])
    #         cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    # for x, b in enumerate(boxes.splitlines()):
    #     if x != 0:
    #         b = b.split()
    #         if len(b) == 12:
    #             x, y, w, h = int(b[6]), int(b[7]), int(b[8]), int(b[9])
    #             cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)
    #             print("%s 位置 %d  %d", b, x, y)
   # cv2.imshow("OpenCV", img)
   # cv2.waitKey()

    return out_content


if __name__ == '__main__':
    print(parse_image_to_txt(
        "图片地址"))

-psm 說明

0:定向脚本监测(OSD)
1: 使用OSD自动分页
2 :自动分页,但是不使用OSD或OCR
3 :全自动分页,但是没有使用OSD(默认)
4 :假设可变大小的一个文本列。
5 :假设垂直对齐文本的单个统一块。
6 :假设一个统一的文本块。
7 :將圖片視為一行文字句子。
8 :將圖片視為一個“字母”。
9 :将图像视为圆中的单个词。
10 :將圖片視為一個“單字”。```

补充简单说下Centos环境下的故事

  1. 安装pip curl https://bootstrap.pypa.io/get-pip.py | python -
  2. yum install tesseract安装tesseract
  3. 语言包放到 /usr/share/tesseract路径下

相关文章

网友评论

      本文标题:python 图片识别文字

      本文链接:https://www.haomeiwen.com/subject/kvdvcltx.html