Vue实现:Ctrl+V粘贴文字图片截图,调用第三方API文字识别OCR内容并进行内容分割识别填充。

本文涉及的产品
教育场景识别,教育场景识别 200次/月
自定义KV模板,自定义KV模板 500次/账号
通用文字识别,通用文字识别 200次/月
简介: Vue实现:Ctrl+V粘贴文字图片截图,调用第三方API文字识别OCR内容并进行内容分割识别填充。


paste组件

<template>
    <div>
        <el-button type="success" icon="el-icon-copy-document"
            @click="pasteText = '', visible = true">快捷粘贴(Ctrl+V)</el-button>
        <el-dialog 
            title="粘贴信息" 
            :visible.sync="visible" 
            append-to-body 
            :close-on-click-modal="false"
            :close-on-press-escape="false"
        >
            <el-input type="textarea" ref="textarea" :rows="10" placeholder="输入文字信息或直接粘贴图片" v-model="pasteText"
                maxlength="1000" show-word-limit @paste="paste"></el-input>
            <i class="upload-bg-img el-icon-picture"></i>
            <div slot="footer" class="dialog-footer">
                <el-button @click="close">取消</el-button>
                <el-button type="primary" @click="ok">确定</el-button>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import $ from 'jquery';//cnpm i jquery -s
export default {
    data() {
        return {
            pasteText: '',
            visible: false,
        };
    },
    destroyed(d) {
        document.removeEventListener('paste', this.paste)
    },
    created() {
        document.addEventListener('paste', this.paste)
    },
    methods: {
        // 粘贴
        paste(event) {
            if (this.visible) return;
            // 文本----------------------------------------
            const text = (event.clipboardData || window.clipboardData).getData('text');
            if (text && text.trim()) {
                // console.log('粘贴的文本', text);
                this.pasteText = text;
                this.handleText(this.pasteText);
                return;
            }
            // 图片----------------------------------------
            let image = null;
            const items = (event.clipboardData || window.clipboardData).items;
            if (!items || items.length === 0) return this.$message.error('当前浏览器不支持本地打开图片,请复制粘贴文本内容!');
            for (let i = 0; i < items.length; i++) {
                if (items[i].type.indexOf('image') !== -1) {
                    image = items[i].getAsFile();
                    break;
                }
            }
            if (image) {
                // console.log('粘贴的图片', image);
                this.handleImage(image);
                return;
            }
            if (!text || !image) return this.$message.error('请粘贴文本或图片');
        },
        handleText(d) {
            let aa = d
                .replace(/\n(\n)*( )*(\n)*\n/g, "\n")//去掉多余空行
                .split('\n');//每一行作为一条数据
            let r = [];
            for (let i = 0, len = aa.length; i < len; i++) {
                let a = aa[i].trim().replace(/\s+/g, " ");//将连续多余空格缩减为一个空格
                a && r.push(a.split(" "));
            }
            this.$emit('result', r);
        },
        handleImage(d) {
            const reader = new FileReader();
            reader.readAsDataURL(d);
            reader.onload = e => {
                // e.target.result 即为base64结果
                let data = { image: e.target.result }
                data = JSON.stringify(data);
                // 粘贴上传图片接口调用(帮助文档:https://www.apispace.com/eolink/api/ocrbase/apiDocument#scroll=0) 
                $.ajax({
                    url: "https://eolink.o.apispace.com/ocrbase/ocr/v1/base",
                    method: "POST",
                    headers: {
                        "X-APISpace-Token": "自己去www.apispace.com申请",
                        "Authorization-Type": "apikey",
                        "Content-Type": "application/json"
                    },
                    data,
                    crossDomain: true
                })
                    .done(d => {
                        this.pasteText = d.words_result.map(v => v.word).join('\n')
                        this.visible = true;
                    })
                    .fail(d => {
                        this.$message.error(JSON.parse(d.responseText).msg);
                    });
            };
        },
        // 取消
        close(d) {
            this.visible = false;
        },
        // 确定
        ok(d) {
            if (this.pasteText && this.pasteText.trim()) {
                this.handleText(this.pasteText);
                this.close();
            } else this.$message.error(this.$refs.textarea.$el.querySelector("textarea").placeholder);
        },
    }
};
</script>
<style lang="scss" scoped>
.dialog-footer {
    display: flex;
    &>* {
        width: 100%;
    }
}
>>>.el-textarea {
    z-index: 1;
    .el-textarea__inner {
        min-height: 200px !important;
        max-height: 500px;
        background-color: transparent;
    }
}
.upload-bg-img {
    display: block;
    position: absolute;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100px;
    height: 100px;
    font-size: 100px;
    transform: translateY(-10px);
    color: #eee;
    pointer-events: none;
    z-index: 0;
}
</style>

调用paste组件

<paste @result="pasteResult"></paste>
...
import paste from "@/vue/components/paste";
...
components: {
    paste,
},
...
pasteResult(d) {
    console.log(JSON.stringify(d, null, 2));//输入内容见下面gif截图
},


相关文章
|
8天前
|
人工智能 文字识别 API
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
moonshot-v1-vision-preview 是月之暗面推出的多模态图片理解模型,具备强大的图像识别、OCR文字识别和数据提取能力,支持API调用,适用于多种应用场景。
65 6
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
|
2月前
|
存储 人工智能 文字识别
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
本文介绍了纸质档案数字化的技术流程,包括高精度扫描、图像预处理、自动边界检测与切割、文字与图片分离抽取、档案识别与文本提取,以及识别结果的自动保存。通过去噪、增强对比度、校正倾斜等预处理技术,提高图像质量,确保OCR识别的准确性。平台还支持多字体识别、批量处理和结构化存储,实现了高效、准确的档案数字化。具体应用案例显示,该技术在江西省某地质资料档案馆中显著提升了档案管理的效率和质量。
|
6月前
|
文字识别
印刷文字识别使用问题之影响印刷体文字识别率包括哪些
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
机器学习/深度学习 文字识别 算法
百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用
百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用
404 0
|
6月前
|
存储 文字识别 算法
印刷文字识别使用问题之电商图片文字识别是否支持一次调用识别多张图片
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
文字识别
印刷文字识别使用问题之是否支持非标发票的识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
存储 文字识别 运维
印刷文字识别使用问题之如何开通统一识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
文字识别 容器
印刷文字识别使用问题之是否支持医疗检测报告识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
人工智能 JSON 文字识别
印刷文字识别使用问题之如何数电发票进行识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。

热门文章

最新文章