关于超星最近题目乱码繁体字的解决方案
本帖最后由 enncy 于 2022-5-12 18:20 编辑> 本帖最后由 enncy 于 2022-5-7 17:22 编辑
这次确实有点东西的,通过自定义字体文件 `@font-face`,然后加 `font-cxsecret` css类到每个文本元素,吧原本文档的乱码字体显示成正常字体。用户看到的就是正常字体但是源码里面是乱码。
***
这里给两个解决思路
1. 网上各种加密解密,这里本人技术问题看不懂所以不多说。
2. 通过 (https://github.com/tsayen/dom-to-image) 获取元素的base64图片,通过 (https://github.com/naptha/tesseract.js/blob/master/docs/examples.md) 文字识别图片文本 。
## 开放 API
这里开放一个API给大家用,直接调用即可破解繁体字乱码, 具体API详情请看文档: [https://enncy.github.io/online-course-script/api#ocr](https://enncy.github.io/online-course-script/api#ocr)
## 以下是demo例子
```html
<html>
<head>
<script src="https://unpkg.com/tesseract.js@2.1.0/dist/tesseract.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dom-to-image@2.6.0/src/dom-to-image.min.js"></script>
</head>
<body>
<!-- 加点内边距,不然只能显示半边的字体 -->
<div style="padding: 4px;">
hello world
</div>
</body>
</html>
```
```js
const { createWorker } = Tesseract;
const worker = createWorker();
// 这里是加载网络的ocr数据,可能需要梯子才能访问,可以看我开放API中的具体说明
await worker.load();
// 加载语言
await worker.loadLanguage('eng');
await worker.initialize('eng');
// 元素
const el = document.querySelector('div')
// 图片 base64
const pngBase64 = await domtoimage.toPng(el);
const { data: { text } } = await worker.recognize(pngBase64);
console.log(text);
// 结束
await worker.terminate();
```
输出结果
!(data/attachment/forum/202204/27/094825xqpydp6p6fztno3b.png)
虽然中文识别有些困难。。。
```js
// 加载语言
await worker.loadLanguage('chi_sim');
await worker.initialize('chi_sim');
```
!(data/attachment/forum/202204/27/095216d3jl359bv5kmelne.png)
但是在给文本加了一点间隔后 `letter-spacing` 识别效果明显变好,还可以增加字体大小
!(data/attachment/forum/202204/27/095702ukgi4d08digl4tge.png)
输出
!(data/attachment/forum/202204/27/095751ki4slmlniqhmuuhz.png)
有大佬还有其他方法吗 也有一点束手无计。。。
看字体大小像是根据题目开动态生成的内联style
实在太小了。。。 李恒道 发表于 2022-4-27 01:23
也有一点束手无计。。。
看字体大小像是根据题目开动态生成的内联style
实在太小了。。。 ...
有办法了。 https://github.com/tsayen/dom-to-image 加tesseract ocr enncy 发表于 2022-4-27 09:26
有办法了。 https://github.com/tsayen/dom-to-image 加tesseract ocr
Tesseract.js | Pure Javascript OCR for 100 Languages! (projectnaptha.com)
客户端ocr,然后再去查题
王一之 发表于 2022-4-27 10:09
ocr成本太高了
有浏览器端的,这个跑完也就几秒而已 🤣 enncy 发表于 2022-4-27 10:11
有浏览器端的,这个跑完也就几秒而已 🤣
嗯 找到了
https://tesseract.projectnaptha.com/ enncy 发表于 2022-4-27 10:11
有浏览器端的,这个跑完也就几秒而已 🤣
哥哥住论坛么,才发完想编辑就回复了 王一之 发表于 2022-4-27 10:12
哥哥住论坛么,才发完想编辑就回复了
没, 想打开看看就看到回复了😂 这个ocr效果好像不是很好,查题命中率大大降低{:4_86:}