From 97b7cb5680c0e113caadbc0faf6f60111469e661 Mon Sep 17 00:00:00 2001 From: "97694732@qq.com" Date: Thu, 4 Jun 2026 15:45:37 +0800 Subject: [PATCH] =?UTF-8?q?ISBN=E6=89=AB=E7=A0=81=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=8B=8D=E7=85=A7=E6=91=84=E5=83=8F=E5=A4=B4?= =?UTF-8?q?+OCR=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/upload/upload.vue | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/pages/upload/upload.vue b/pages/upload/upload.vue index 3abcfae..440a846 100644 --- a/pages/upload/upload.vue +++ b/pages/upload/upload.vue @@ -1142,21 +1142,44 @@ export default { // ISBN扫码 scanISBN() { - // 必须已登录孔网,否则直接弹窗不打开摄像头 + // 必须已登录孔网 if (!this.isLoggedIn) { uni.showToast({ title: '请先登录孔网账号', icon: 'none' }) return } - uni.scanCode({ - onlyFromCamera: true, - scanType: ['barcode'], + // 打开普通拍照摄像头(不带扫码框),拍照后OCR识别ISBN + uni.chooseImage({ + sourceType: ['camera'], + count: 1, success: (res) => { - this.isbn = (res.result || '').trim() - this.searchISBN() + uni.showLoading({ title: '识别中...' }) + const filePath = res.tempFilePaths[0] + uni.uploadFile({ + url: 'https://book.xcx.ocr.buzhiyushu.cn/ocr', + filePath: filePath, + name: 'file', + success: (ocrRes) => { + uni.hideLoading() + try { + const ocrData = JSON.parse(ocrRes.data) + if (ocrData && ocrData.texts && ocrData.texts.ISBN) { + this.isbn = ocrData.texts.ISBN.replace(/\D/g, '') + this.searchISBN() + } else { + uni.showToast({ title: '未识别到ISBN,请重试或手动输入', icon: 'none' }) + } + } catch (e) { + console.error('OCR解析失败:', e) + uni.showToast({ title: '识别失败', icon: 'none' }) + } + }, + fail: () => { + uni.hideLoading() + uni.showToast({ title: '识别失败', icon: 'none' }) + } + }) }, - fail: () => { - uni.showToast({ title: '扫码取消或失败', icon: 'none' }) - } + fail: () => {} }) },