大家好,我是testerzhang, 平时我们想提取图片的文字,可能用微信自带的提取就很方便了,但是我们是否可以自己自建一个这样的服务呢?今天给大家分享一下。
我们需要在一台已经安装了 Docker 环境的 Linux 服务器进行操作。
最低配置要求:
•CPU: 1核•内存: 2G•SWAP: 2G
# 从 dockerhub pull
docker pull mmmz/trwebocr:latest
# 运行镜像
docker run -itd --rm -p 8089:8089 --name trwebocr mmmz/trwebocr:latest
这里把容器的8089
端口映射到了物理机的8089
上,是不是很简单,如果要映射对外的其他端口,可自行调整。
访问网址:http://xx.xx.xx.xx:8089/
可自行编写一个 Python 脚本调用它的API 接口:
import traceback
import urllib3
import requests
from loguru import logger
logger.add('logs/ocr_tools_{time:YYYY-MM-DD}.log')
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
OCR_API_URL = 'https://10.10.10.10:8089'
def ocr_result(img_file):
ocr_text = ""
url = f'{OCR_API_URL}/api/tr-run/'
upload_img_file = {
# 'file': open('testocr.png', 'rb')
# 'file': open('testocr2.jpg', 'rb')
# 'file': open('testocr3.png', 'rb')
'file': open(img_file, 'rb')
}
compress = 0
# compress = 1600
data_dict = {
'compress': compress
}
try:
resp = requests.post(url=url,
data=data_dict,
files=upload_img_file,
verify=False,
)
resp_status_code = resp.status_code
if resp_status_code !=200:
logger.error(f"识别文字接口失败:状态码{resp_status_code}")
return ocr_text
resp_json = resp.json()
# logger.debug(f"resp_json:{resp_json}")
resp_data_dict = resp_json.get("data", {})
speed_time = resp_data_dict.get("speed_time", "")
logger.debug(f"speed_time:{speed_time}秒")
resp_raw_out_list = resp_data_dict.get("raw_out", [])
# logger.debug(f"resp_raw_out_list:{resp_raw_out_list}")
if len(resp_raw_out_list) == 0:
# logger.error(f"识别文字接口失败:识别文字异常:{resp_json}")
logger.error(f"识别文字接口失败:识别文字异常")
return ocr_text
for resp_raw_out_record in resp_raw_out_list:
# logger.debug(f"resp_raw_out_record:{resp_raw_out_record}")
temp_text = resp_raw_out_record[1]
# logger.debug(f"temp_text:{temp_text}")
ocr_text = f"{ocr_text}{temp_text}\n"
logger.debug(f"识别文字结果:{ocr_text}")
except:
logger.error(f"识别文字接口异常:{traceback.format_exc()}")
return ocr_text
ocr_result(img_file='testocr3.png')
执行脚本
$ python ocrtool.py
脚本输出效果:
2024-01-01 17:55:09.304 | DEBUG | __main__:ocr_result:49 - speed_time:0.48秒
2024-01-01 17:55:09.304 | DEBUG | __main__:ocr_result:66 - 识别文字结果:月下独酌四首·其一
【作者】李白
【朝代】唐
花间一壶酒,
独酌无相亲。
举杯邀明月,对影成三人。
月既不解饮,影徒随我身。
暂伴月将影,行乐须及春。
我歌月徘徊,我舞影零乱。
醒时相交欢,醉后各分散。
永结无情游,相期邈云汉。
https://github.com/alisen39/TrWebOCR
这个是用 python 实现的,个人有兴趣,可以查看下源码。
该服务可以不使用 GPU,如果服务器性能越好响应速度也会更快。
自己组建了一个新的交流群,需要进群交流,可以扫描下方加群二维码,也可以在公众号后台回复【加技术群】即可收到相应说明。
喜欢的话可以点击"收藏"进行稍后阅读,可以点击"在看"支持下,也可以分享下此文章给你的其他朋友。
欢迎关注我的公众号“testerzhang”,原创技术文章第一时间推送。
不错,赏个鸡腿!
微信扫一扫
关注该公众号