html网页使用tesseract实现OCR文字识别

即在前端实现OCR文字识别

1.前端代码

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OCR文字识别</title>
    <script src='https://cdn.jsdelivr.net/npm/tesseract.js@5/dist/tesseract.min.js'>
    //使用CDN加载tesseract,如若失效,请自行查找替换
   </script>
</head>

<style>
    * {
        margin: 0;
        padding-left: 0;
    }

    header {
        height: 100px;
        width: 100vw;
        background: #F5F7F8;
    }

    header p {
        text-align: center;
        font-size: 20px;
        line-height: 100px;
    }

    .core {
        height: 540px;
        width: 1000px;
        margin: 20px auto;
    }

    .core .source {
        float: left;
        width: 480px;
        margin: 0 10px;
    }

    .core .source #uploadedImage {
        width: 480px;
        height: 298px;
    }

    .core .result {
        float: left;
        width: 480px;
        margin: 0 10px;
    }

    .core .result #resultMsg {
        width: 480px;
        height: 298px;
    }
</style>

<body>
    <header>
        <p>OCR文字识别</p>
    </header>
    <div class="core">
        <div class="source">
            <img id="uploadedImage">
            <input type="file" id="imageInput" accept="image/png,image/jpeg,image/jpg" onchange="uploadImage(this)">
            
        </div>

        <div class="result">
            <textarea name="" id="resultMsg" cols="30" rows="10"></textarea>
        </div>

    </div>

    <script> 
        // 监听图片输入字段的改变事
        document.getElementById('imageInput').addEventListener('change', function (e) {
            // 获取用户选择的文件
            var file = e.target.files[0];
            if (file) {
                var reader = new FileReader();
                // 当文件读取完成时,创建一个Image对象并设置其src属性,然后处理图片加载完成的事件
                reader.onload = function (e) {
                    var image = new Image();
                    image.src = e.target.result;
                    // 当图片加载完成后,显示图片并进行文字识别
                    image.onload = function () {
                        //预览图片
                        document.getElementById('uploadedImage').src = image.src;
                        document.getElementById('uploadedImage').style.display = 'block';

                        // 使用Tesseract.js进行文字识别
                        Tesseract.recognize(
                            image,
                            'chi_sim',
                            {
                                logger: info => console.log(info)
                            }
                        ).then(result => {
                            console.log('【识别结果】', result.data.text);
                            // 将识别结果文本输入到页面元素中
                            if (result && result.data.text) {
                                document.getElementById('resultMsg').value = result.data.text;
                            } else {
                                console.error('【错误】无法从识别结果中检索文本');
                            }
                        });
                    };
                };
                reader.readAsDataURL(file);
            }
        });
    </script>
</body>

</html>

2.实现效果

2.1识别页面

2.2识别效果


相关推荐
qq_406176142 分钟前
深入剖析JavaScript原型与原型链:从底层机制到实战应用
开发语言·前端·javascript·原型模式
开开心心_Every41 分钟前
免费窗口置顶小工具:支持多窗口置顶操作
服务器·前端·学习·macos·edge·powerpoint·phpstorm
闲蛋小超人笑嘻嘻1 小时前
Vue 插槽:从基础到进阶
前端·javascript·vue.js
梦6501 小时前
Vue2 与 Vue3 对比 + 核心差异
前端·vue.js
tiandyoin2 小时前
给 MHTML 添加滚动条.mhtml
前端·chrome·html·mhtml
遗憾随她而去.2 小时前
前端大文件上传(切片并发/断点续传/秒传/WebWorker 计算Hash) 含完整代码
前端
AKA__老方丈3 小时前
vue-cropper图片裁剪、旋转、缩放、实时预览
前端·vue.js
梦6504 小时前
Vue 单页面应用 (SPA) 与 多页面应用 (MPA) 对比
前端·javascript·vue.js
清铎4 小时前
大模型训练_week3_day15_Llama概念_《穷途末路》
前端·javascript·人工智能·深度学习·自然语言处理·easyui
岛泪4 小时前
把 el-cascader 的 options 平铺为一维数组(只要叶子节点)
前端·javascript·vue.js