Django输入URL链接实现百度文字识别

前置条件:

pip install requests

pip install urllib3==1.26.15

步骤一:创建sourceai/model/ocr/baidu/baidu_ocr.py文件,代码如下

# encoding:utf-8
​
import requests
import base64
​
​
def  baidu_ocr(img_path,isurl = False):
    ak = 'XXXXX'
    sk = 'XXXXX'
​
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'
    response = requests.get(host)
    access_result = response.json()
    print(access_result)
​
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
​
    if isurl:
        params = {"url": img_path}
    else:
        # 二进制方式打开图片文件
        f = open(img_path, 'rb')
        img = base64.b64encode(f.read())
​
        params = {"image": img}
​
​
​
    request_url = request_url + "?access_token=" + str(access_result['access_token'])
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    res = ''
    if response:
        result = response.json()
        print(result)
​
        lines = result['words_result']
        for line in lines:
            try:
                words = line['words']
​
                res = res + words + '<br/>'
            except:
                pass
​
    return res
​
if __name__ == '__main__':
    baidu_ocr("1.jpg")
    baidu_ocr("https://c-ssl.duitang.com/uploads/item/201506/28/20150628112625_AyP4L.jpeg",True)

创建sourceai/model/ocr/xunfei/xunfei_ocr.py文件,代码如下

def xunfei_ocr(path):
    pass

步骤二:创建sourceai/model/ocr/app_ocr.py文件,代码如下

 
from sourceai.model.ocr.xunfei import xunfei_ocr
from sourceai.model.ocr.baidu import baidu_ocr
​
​
def ocr(path, product='baidu',isurl = False):
    # 业务逻辑需补充
    if product == 'xunfei':
        res = xunfei_ocr.xunfei_ocr(path)
    elif product == 'baidu':
        res = baidu_ocr.baidu_ocr(path, isurl)
    else:
        res = baidu_ocr.baidu_ocr(path,isurl)
    return res
​
​
if __name__ == '__main__':
    url = 'http://tupian.qqjay.com/u/2017/1111/1_133948_6.jpg'
    res = ocr(url,product='baidu',isurl=True)
    print(res)

步骤三:sourceai/views.py添加如下代码:

from sourceai.model.ocr import app_ocr
​
def url_to_text(request):
    url = request.GET['imgFile']
    result = app_ocr.ocr(url,isurl=True)
    print(result)
    return HttpResponse(json.dumps({"res": result}))
​
def img_to_text(request):
    # if request.POST:
​
    picture_obj = request.FILES.get('imgFile')
    path = 'static/images/' + picture_obj.name
    with open(path, 'wb') as f:
        for img in picture_obj.chunks():
            f.write(img)
​
    result = app_ocr.ocr(path)
    # result = app_ocr.baidu_common_ocr(path)
​
    return HttpResponse(json.dumps({"res": result}))

步骤四:softai/settings.py文件中120左右添加如下代码

STATIC_URL = '/static/'
import os
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]

步骤五:soft863ai/urls.py中添加路径映射

path('urltotext', views.url_to_text),

步骤六:启动程序,postman测试

postman中新增Key参数imgFile,内容为:https://img-baofun.zhhainiao.com/fs/88e0cc871518e95fcf5032a106ef01ad.jpg

全部请求内容为

http://127.0.0.1:8000/urltotext?imgFile=https://img-baofun.zhhainiao.com/fs/88e0cc871518e95fcf5032a106ef01ad.jpg

点击send按钮,查看结果

步骤七:创建static/js文件夹

步骤八:将jquery-1.11.3.min.js放置到static/js文件夹中

步骤九:创建templates/imgtotext/urlocr.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery-1.11.3.min.js"></script>
</head>
<body>
<label>URL:</label>
<input id="id1" type="text" style="width: 800px;">
<br>
<p id="context"></p>
<button>点击按钮</button>
<script>
    $(document).ready(function () {
        $("button").click(function () {
            url = $("#id1").val()
            $.ajax({
                url: "/urltotext",
                type: "get",
                data: {imgFile: url},
                dataType: "json",
                success: function (data, status, callback) {
​
                    $("#context").text(data.res)
                },
                error: function () {
                    alert("失败")
                }
            })
​
        });
    });
</script>
​
</body>
</html>

步骤十:sourceai/views.py添加如下代码:

def ocr_index_url(request):
    """跳转到图片转文字页面"""
    return render(request, 'imgtotext/urlocr.html')

步骤十一:soft863ai/urls.py中添加路径映射

 path('ocrurl', views.ocr_index_url),

完整如下:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('second', views.first_index),
    path('firstvalue', views.first_value),
    path('urltotext', views.url_to_text),
    path('ocrurl', views.ocr_index_url),
​
]

步骤十二:打开网页查看效果

浏览器输入http://127.0.0.1:8000/ocrurl,URL输入https://img-baofun.zhhainiao.com/fs/88e0cc871518e95fcf5032a106ef01ad.jpg ,点击按钮执行,查看效果

执行效果

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django 是一个使用 Python 语言编写的开源 Web 框架,它提供了一种方便快捷的方式来构建 Web 应用程序。要实现文字识别功能,可以通过以下步骤来使用 Django: 1. 安装必要的库和依赖:首先,你需要安装 PIL(Python Imaging Library)库或者是其替代品 Pillow,以便能够处理图片。可以使用以下命令来进行安装: ``` pip install pillow ``` 2. 创建 Django 项目和应用:使用 Django 的命令行工具创建一个新的 Django 项目,并创建一个应用程序来处理文字识别需求: ``` django-admin startproject project_name cd project_name python manage.py startapp app_name ``` 3. 设置 Django 项目:打开项目的设置文件 settings.py,将新创建的应用程序添加到 INSTALLED_APPS 列表中,同时设置图片上传目录和处理视图: ``` INSTALLED_APPS = [ ... 'app_name', ] MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') ``` 4. 定义模型和表单:在应用程序的 models.py 文件中定义一个模型类来保存上传的图片和识别的文字。在 forms.py 文件中创建一个表单类来处理图片上传: ``` from django.db import models class Image(models.Model): image = models.ImageField(upload_to='images/') text = models.TextField(blank=True, null=True) from django import forms class ImageUploadForm(forms.ModelForm): class Meta: model = Image fields = ('image',) ``` 5. 创建视图和模板:在应用程序的 views.py 文件中创建一个视图函数来处理文字识别逻辑,并将结果呈现到模板上: ``` from django.shortcuts import render from .forms import ImageUploadForm import pytesseract from PIL import Image def recognize_text(request): if request.method == 'POST': form = ImageUploadForm(request.POST, request.FILES) if form.is_valid(): image = form.cleaned_data['image'] img = Image.open(image) text = pytesseract.image_to_string(img) form.instance.text = text form.save() return render(request, 'result.html', {'text': text}) else: form = ImageUploadForm() return render(request, 'upload.html', {'form': form}) ``` 6. 创建模板:在应用程序的 templates 文件夹中创建两个模板文件 upload.html 和 result.html,分别用于图片上传和文字识别结果显示。 这是一个简单的示例,你可以根据需要进行修改和扩展。总之,通过 Django 的构建和组织能力,结合相关的库和工具,你可以很方便地实现文字识别功能,并将其集成到你的 Web 应用程序中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数智侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值