Nodejs + Electron 撸个文字提取工具,支持扫描版 PDF
Nodejs + Electron 撸个文字提取工具,支持扫描版 PDF
背景
朋友工作总要找资料什么的,大多是 pdf 扫描版格式,无法复制,需要转成 word 或者文字,但由于其人穷,又不买那些 pdf 在线转换 word 的工具。得知后,帮助开发一个工具给她使用。
支持功能
- image ocr
node test/ocr.test.js
(图片文字提取) - converting scanned PDF's to an image (扫描版 PDF 转为图片后文字提取,同下)
- support pdf ocr
node test/pdf.test.js
( PDF 文字提取) - support electron desktop packager ( Electron 打包为 Desktop App )
Demo 截图
实现过程介绍
本项目基于百度 AIP 平台,OCR 接口
图片 OCR 提取文字
这个简单,直接走百度 OCR 即可得到结果。node.js 调用 SDK 而已
正常格式 PDF
这个通过pdfinfo
工具 + GraphicsMagick
来实现,pdfinfo 获取 pdf 文件信息(分页信息等),GraphicsMagick 将 pdf 作为图片(处理图片很强大)。
扫描版 PDF
这个麻烦是在 pdfinfo
工具是无法获取 pdf 文件信息的,需要代码做兼容情况处理。扫描版 PDF 最终还是转换图片后再 OCR 提取文字。
源码
详细使用方式阅读README.md
https://github.com/giscafer/easyocr
欢迎━(`∀´)ノ亻!学习交流
能说下原理吗?草体字能识别不
原理作者也说了,调的百度 OCR 的 SDK,百度有支持草体识别的话,就能识别
楼主是直接购买了那个识别服务吗?我记得免费有个试用上限来着.
我用的是免费版,
难度在 PDF,图片那里没啥,直接走接口的。真正想知道原理的话,应该去搜 OCR 技术原理。
后期本人会出类似的开发教程。可以关注一下。
感谢,恰好能用到。
欢迎━(`∀´)ノ亻! 使用,使用过程有问题可以提 PR 或者提改善建议。
赞啊~准确率能达到多少?
准确率依赖百度 OCR 接口,我用的是基础免费版的,高精准的每天次数不多。
没有公式和代码等图片的识别准确率达到 99%以上。
噢噢,了解了
当然可以!用 Node.js 和 Electron 开发一个文字提取工具,并支持扫描版 PDF,可以借助一些第三方库,如 pdf-poppler
或 tesseract.js
(OCR 库)。以下是一个简单示例,展示如何开始这个项目:
-
安装依赖: 首先,你需要安装 Node.js 和 Electron。然后,在项目目录中初始化一个新的 npm 项目并安装所需依赖:
npm init -y npm install electron pdf-poppler tesseract.js
-
创建主进程文件(
main.js
):const { app, BrowserWindow } = require('electron'); const path = require('path'); function createWindow () { const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js') } }); mainWindow.loadFile('index.html'); } app.whenReady().then(createWindow); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } });
-
编写前端页面(
index.html
)和preload.js
用于与 Node.js 集成,并调用pdf-poppler
和tesseract.js
提取文字。
由于篇幅限制,这里只展示了基本的 Electron 框架。实际项目中,你需要在 preload.js
中编写与 Node.js 交互的代码,并处理 PDF 文件读取和 OCR 文字识别。可以查阅 pdf-poppler
和 tesseract.js
的文档获取更多详细信息。