How-to-extract-text-from-PDF-Image-files-OCR-CarlZeng

news/2025/11/14 20:20:52/文章来源:https://www.cnblogs.com/backuper/p/19223283

本文阐述如何自建并使用OCR识别图片或PDF中文字(转化成文本等进一步处理), 以及NetSuite调用OCR API的场景雏形.
How to extract text from PDF(Image) files. 20251113 引入自建ocr服务

docker部署OCR项目

支持离线+API, 自建ocr服务

Docker compose, vi docker-compose.yml

version: "3"
services:trwebocr:image: mmmz/trwebocr:latestcontainer_name: trwebocrrestart: unless-stoppedports:- "8103:8089"environment:- LANG=zh_CN.UTF-8volumes:- ./data:/app/tr_web/data  #持久化OCR数据

运行docker后, OCR服务开启

访问方式一: (通过网页访问)

访问方式二: 文字识别API

描述: 进行文字识别与检测的接口

地址: https://ocr.carlzeng.com:3/api/tr-run/

方法: POST

请求参数:

参数名称 是否必选 数据类型 描述
file 和 img 二选一 file 通过上传的方式来发送图片的字段
img 和 file 二选一 string 图片的base64值,不需要前缀。
compress int 值为空时,默认将图片最长边压缩到1600px。 值为 0 时,不压缩图片。 值为非0 时,将最长边压缩到该值的大小。
is_draw int 值为 0 时,不返回图片。(没有data['img_detected']返回)

返回参数:

参数名称 是否必选 数据类型 描述
code int 识别结果的状态码,识别成功为200,有异常为 400
msg string 识别结果的文字信息
data dict 识别结果,若识别异常则没有此字段
data['img_detected'] string 画出文字区域的图片base64值
data['raw_out'] list 识别结果的输出
data['speed_time'] float 识别的耗时

返回示例:

{"code": 200,"msg": "\u6210\u529f", "data": {"img_detected": "data:image/jpeg;base64,/9j/4AAQSkZJR5t...","raw_out": [[[11, 13, 402, 36], "\u753b\u51fa\u6587\u5b57\u533a\u57df\u7684\u56fe\u7247base64\u503c", 0.9999545514583588], [[11, 112, 215, 36], "\u8bc6\u522b\u7ed3\u679c\u7684\u8f93\u51fa", 0.999962397984096], [[11, 171, 158, 36], "\u8bc6\u522b\u7684\u8017\u65f6", 0.999971580505371]], "speed_time": 0.67}}

image-20251113205953922

本小节灵感:

https://github.com/alisen39/TrWebOCR)

https://post.smzdm.com/p/agwev0l6/

NetSuite API呼叫OCR

Background: below is SS1.0 as example since it came from NetSuite email plugin, SS2.0 is the same thing.

下面使用的第三方服务平台, 同样把地址修改为上方的自建平台也是实现ocr识别功能.

1. Registry a API key throw https://ocr.space/OCRAPI

There are limitations for Free Plan

2. Save the email attachment(PDF file) to NetSuite FileCabinet, set it to available without login, get the full url address, encode it.

var importFile = attachments[indexAtt];importFile.setIsOnline(true);
var intFileId = nlapiSubmitFile(importFile);
var strInvFileUrl = "https://" + nlapiGetContext().getCompany() + ".app.netsuite.com"+ objInvoiceFileRec.getURL();
strInvFileUrl = encodeURIComponent(strInvFileUrl);

3. Send Request to https://api.ocr.space/parse/imageurl?apikey=abcAPIKEYabc&filetype=PDF&isTable=true&url=

var response = nlapiRequestURL(strReqUrl, null, a);
There are varience of parameters for this API, in my case, it's invoice formated as table, that's why I send isTable=true to identify it; then it will help me to locate the expected cell and values.

4. Got and parsed the Response, we will get the Text messages on the PDF or Images.

var arrParsedLines = (objOcrRes['ParsedResults'] && objOcrRes['ParsedResults'][0]) ? objOcrRes['ParsedResults'][0]['TextOverlay']['Lines']: null;
var objVndBillData = parseDataFromInvPdf(arrParsedLines);

定制服务下单

image-20251110210430326

服务流程

image-20251109195518962

服务内容

image-20251109195734192

image-20251109195806782

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/965686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web应用模糊测试完全指南

本文详细介绍了使用ffuf工具进行Web应用模糊测试的完整流程,包括目录发现、子域名枚举、暴力破解攻击、参数挖掘等多种技术,提供了实用的命令示例和配置参数说明。Fuzzing Web Apps Full Guide 前言 在这篇博客中,我…

升鲜宝供应链管理系统、各端的访问地址及nginx 真实的配置方法

server {listen 443 ssl;server_name sxbscm.sxbscm.com;# 1. SSL 证书配置(关键:补充中间证书,避免链不完整导致兼容问题)ssl_certificate /mnt/sxbscm/ssl/sxbscm.sxbscm.com/sxbscm.sxbscm.com.pem; # 主证书(…

2025.11.14模拟赛

IOI赛制,fjj的模拟赛,题目质量非常高(准确来说是非常适合我们),fjj强大的%%% 赛时看T1,然后打了60暴力,已经知道用组合数来求了,然后也知道固定左上角的来求答案,但是就是没想明白怎么去除重复的贡献 然后一看…

【HT-086-Div.2】错乱的集合

【HT-086-Div.2】错乱的集合 题解比赛现场 更阅读体验的阅读体验 是个好题。但是我赛时怎么什么都不会。首先简化一下题面:\(s\) 和 \(t\) 被认为是相同的,当且仅当 \(s=t\) 或 \(|t|=|s|-1\) 且 \(t\) 是 \(s\) 的后…

uiautomator2元素查看器WEditor的安装和启动

WEditor 一、WEditor简介 在执行APP UI自动化测试时,需要使用到元素定位,通常我们会直接使用appium Desktop的Inspector。介绍另一款UI元素定位的工具--WEditor。WEditor能够提供辅助编写脚本,定位元素,调试代码等…

深入解析:【从0开始学习Java | 第22篇】反射

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【题解】LOJ6300. 「CodePlus 2018 3 月赛」博弈论与概率统计

首先转化成总和除以方案数的形式。 先想想一条路径的答案是什么,显然是 \(n - m + cnt\),其中 \(cnt\) 为没用的输局。 这种东西显然非常能够转化成网格计数。起点为 \((0, 0)\) 终点为 \((n, m)\) 赢一局向右一步,…

感情粉末沿着试管边缘 在祝福中逐渐分解 加热认知离子重新排列 于底部悲伤沉淀

test39 降水 令 \(a_i\gets \frac{a_i}{2}\),先计算出 \(\sum a_i=\frac{\sum p_i}{2}\),然后因为限定了 \(n\) 的奇偶性容易减出 \(a_n\),然后容易依次求出 \(a_1,\dots,a_{n-1}\)。 #pragma GCC optimize(1,2,3,&…

C#循序渐进 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025.11.14 - A

今天形势与政策,学习了一些尝试,加油

从RvmTranslator到PlantAssistant

将RvmTranslator中的剖切功能和根据名称查找功能迁移到PlantAssistant中来。引言 RvmTranslator主要是处理AVEVA的RVM文件,现在的PlantAssistant不仅可以解析RVM文件,还可以解析SP3D的VUE文件,所以RvmTranslator不再…

MI50 在ubuntu 下 风扇控制实现

关于MI50的风扇控制问题,之前很长一段时间都是win上使用,主要是win上解决了MI50风扇控制问题,使用‌Fan-Control软件+HWInfo解决。在windows下有很多处理风扇控制的成熟方案,主要是win下驱动问题比较好解决,部分l…

PortSwigger靶场之 CSRF where token is not tied to user session通关秘籍 - 实践

PortSwigger靶场之 CSRF where token is not tied to user session通关秘籍 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

nvm不能下载安装低版本node解决办法

nvm不能下载安装低版本node解决办法 场景 以前下载还是可以的,比如10/12/14之类的 但是近期发现:16以下版本无法下载,下载报错 解决 访问node官网 选择对应系统,对应版本的压缩包,下载 下载后解压到桌面, 剪贴到…

完整教程:【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用

完整教程:【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用2025-11-14 19:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto …

flask: 抛出异常

一,代码: 异常 处理: #-------------------------------------异常处理----------------------------- @app.errorhandler(Exception) def handle_exception(error):stack = traceback.format_exc()app.logger.erro…

20251114——读后感5

自动化能提高效率,如自动化测试。写接口时,用JUnit写单元测试,一键运行就能发现逻辑错误,比手动测试高效且覆盖全面,像测试用户注册功能,自动测试能快速验证各种输入情况。

雪地奔驰全等级提升所需经验一览

雪地奔驰升级所需经验一览,游戏目前版本最高等级为30级,下面就为大家分享全等级所需经验,供各位玩家们参考。

2025皮肤亚健康管理品牌最新专业推荐:科技赋能健康美新生态

随着消费者对皮肤健康管理需求的升级,专业皮肤亚健康管理服务市场迎来爆发式增长。本榜单基于技术创新力、产品体系、服务效能三大维度,结合行业权威数据与用户反馈,深度解析2025年五大皮肤亚健康管理品牌综合实力,…