Project Icon

tesseract.js-core

Tesseract OCR引擎的JavaScript WebAssembly实现

tesseract.js-core是tesseract.js的核心组件,将Tesseract OCR引擎从C语言编译为JavaScript WebAssembly。该项目提供跨平台的文字识别功能,适用于浏览器和Node.js环境。它包含构建脚本、JavaScript封装和第三方依赖,并对Tesseract进行了优化,增加了页面角度检测和图像旋转等功能。开发者可使用Docker构建,或运行最小示例测试其功能。

tesseract.js-core

tesseract.js 的核心部分,将原始 tesseract 从 C 语言编译为 JavaScript WebAssembly。

编译

要自行构建 tesseract-core.js,请安装 docker 并运行:

bash build-with-docker.sh

生成的文件将存储在根路径中。编译时,有时会由于竞争条件而出现错误(某些依赖项似乎无法正确并行编译)。重新运行通常可以解决问题。

结构

  1. 构建脚本位于 build-scripts 文件夹中
  2. JavaScript/包装器文件位于 javascript 文件夹中
  3. 所有依赖项(包括 Tesseract)都在 third_party 文件夹中
    1. 除 Tesseract 外,所有依赖项均未修改,Tesseract 使用了一个 fork 版本的仓库
    2. Tesseract 仓库有以下变更:
      1. 修改了 CMakeLists.txt 以使用 emscripten 构建
      2. 修改了 ltrresultiterator.hltrresultiterator.cpp 以添加 WordChoiceIterator
      3. 添加了 src/arch_see 文件夹,用于支持 SIMD 的构建
        1. 这里硬编码了 SSE 函数的使用
      4. src/textord/colfind.cpp 中注释掉了 "Empty page!!" 消息,以防止其打印到控制台
      5. 添加了检测页面角度和应用旋转的功能
        1. 修改了 src/ccmain/thresholder.cppsrc/ccmain/thresholder.hsrc/api/baseapi.cppinclude/tesseract/baseapi.h,添加了 exifangle 参数用于旋转图像
        2. baseapi.h 中将 FindLines 从 "protected" 改为 "public",以便暴露给 JavaScript
          1. 允许在不执行后续不必要步骤的情况下检测行(从而检测页面角度)
        3. baseapi.hbaseapi.cpp 中添加了公共 GetGradient 函数,用于报告页面角度
          1. 还需要对 src/ccmain/tesseractclass.hsrc/ccmain/pagesegmain.cppsrc/textord/textord.cppsrc/textord/textord.h 进行小幅修改
            1. 参见此提交:https://github.com/Balearica/tesseract/commit/db6951f655263878f6344380a5ddb95e678d7c09
      6. baseapi.hbaseapi.cpp 中添加了 WriteImage 函数,用于保存图像(原始、灰度和二值)
      7. baseapi.hbaseapi.cpp 中添加了 SaveParametersRestoreParameters 函数,用于保存和恢复参数
      8. src/ccmain/control.cpp 中添加了对 EM_ASM_ARGS 的调用,用于进度日志记录(并添加了 <emscripten.h> 头文件)
      9. 重写了 src/ccutil/tprintf.cpp 中的 tprintf 函数,以强制刷新
      10. src/api/baseapi.cppinclude/tesseract/baseapi.h 中添加了新版本的 SetImage,用于从文件系统读取图像
        1. 这是为了解决内存泄漏问题 —— 参见此问题
      11. 编辑了 src/ccutil/params.cpp 中的 ParamUtils::PrintParams,删除了描述文本(解决了一个 bug)
        1. 该 bug 在这个 Git Issue 中被报告,如果在未来版本的 Tesseract 中得到解决,我们可以删除这一点
      12. 编辑了 src/ccmain/tessedit.cpp,将错误日志保存到单独的文件(/debugDev.txt

运行最小示例

要运行浏览器示例,请在仓库根目录启动一个 Web 服务器(例如运行 http-server)。然后在浏览器中导航到 examples/web/minimal/ 中的页面。

要运行 Node 示例,请导航到 examples/node/minimal/ 目录,然后运行如 node index.wasm.js [input_file]

"基准测试"示例的行为类似,只是运行时间更长,并报告运行时间而不是识别文本。所有其他示例都是实验性的,不应期望能够运行。

贡献

由于我们使用 git-submodule 来管理依赖项,请在克隆仓库时记得添加递归选项:

git clone --recursive https://github.com/naptha/tesseract.js-core
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号