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

正常格式 PDF

这个通过pdfinfo 工具 + GraphicsMagick 来实现,pdfinfo 获取 pdf 文件信息(分页信息等),GraphicsMagick 将 pdf 作为图片(处理图片很强大)。

扫描版 PDF

这个麻烦是在 pdfinfo 工具是无法获取 pdf 文件信息的,需要代码做兼容情况处理。扫描版 PDF 最终还是转换图片后再 OCR 提取文字。

源码

详细使用方式阅读README.md

https://github.com/giscafer/easyocr

欢迎━(`∀´)ノ亻!学习交流


11 回复

能说下原理吗?草体字能识别不


原理作者也说了,调的百度 OCR 的 SDK,百度有支持草体识别的话,就能识别

楼主是直接购买了那个识别服务吗?我记得免费有个试用上限来着.

难度在 PDF,图片那里没啥,直接走接口的。真正想知道原理的话,应该去搜 OCR 技术原理。

后期本人会出类似的开发教程。可以关注一下。

感谢,恰好能用到。

欢迎━(`∀´)ノ亻! 使用,使用过程有问题可以提 PR 或者提改善建议。

赞啊~准确率能达到多少?

准确率依赖百度 OCR 接口,我用的是基础免费版的,高精准的每天次数不多。
没有公式和代码等图片的识别准确率达到 99%以上。

噢噢,了解了

当然可以!用 Node.js 和 Electron 开发一个文字提取工具,并支持扫描版 PDF,可以借助一些第三方库,如 pdf-popplertesseract.js(OCR 库)。以下是一个简单示例,展示如何开始这个项目:

  1. 安装依赖: 首先,你需要安装 Node.js 和 Electron。然后,在项目目录中初始化一个新的 npm 项目并安装所需依赖:

    npm init -y
    npm install electron pdf-poppler tesseract.js
    
  2. 创建主进程文件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();
      }
    });
    
  3. 编写前端页面index.html)和 preload.js 用于与 Node.js 集成,并调用 pdf-popplertesseract.js 提取文字。

由于篇幅限制,这里只展示了基本的 Electron 框架。实际项目中,你需要在 preload.js 中编写与 Node.js 交互的代码,并处理 PDF 文件读取和 OCR 文字识别。可以查阅 pdf-popplertesseract.js 的文档获取更多详细信息。

回到顶部