嘉兴网页制作网站排名莱州网站建设制作
2026/3/28 22:07:39 网站建设 项目流程
嘉兴网页制作网站排名,莱州网站建设制作,免费邮箱登录入口,wordpress怎么添加标签页从图片到JSON#xff1a;DeepSeek-OCR实现表格精准识别 1. 背景与需求分析 在企业级应用中#xff0c;大量纸质单据、发票、采购表等结构化文档需要录入系统。传统人工录入方式效率低、成本高、易出错。随着AI技术的发展#xff0c;光学字符识别#xff08;OCR#xff0…从图片到JSONDeepSeek-OCR实现表格精准识别1. 背景与需求分析在企业级应用中大量纸质单据、发票、采购表等结构化文档需要录入系统。传统人工录入方式效率低、成本高、易出错。随着AI技术的发展光学字符识别OCR成为自动化数据采集的关键技术。然而通用OCR工具在处理复杂表格时往往存在格式错乱、行列错位、合并单元格识别失败等问题。尤其在中文场景下字体多样、排版不规范进一步加剧了识别难度。DeepSeek-OCR-WEBUI 是基于深度学习的大模型OCR解决方案其核心优势在于支持多语言、多字体、复杂背景下的高精度识别内置图表解析模式figure专为表格、公式等结构化内容优化提供Web UI界面和标准API接口便于集成中文识别准确率显著优于主流开源方案本文将围绕“如何通过 DeepSeek-OCR 实现从图片到 JSON 的端到端表格识别”展开重点介绍服务部署、接口调用、HTML转JSON解析逻辑及SpringBoot工程化落地实践。2. DeepSeek-OCR-WEBUI 部署与接口说明2.1 环境准备与镜像启动DeepSeek-OCR-WEBUI 基于 Docker 容器化部署支持单卡GPU运行如4090D。部署步骤如下cd ~/DeepSeek-OCR-WebUI docker compose up -d启动后可通过日志查看服务状态docker logs -f deepseek-ocr-webui服务默认监听http://localhost:8080提供 Web 操作界面和 RESTful API 接口。2.2 核心API接口详解关键接口定义位于/home/qy/DeepSeek-OCR-WebUI/web_service.py文件中的/ocr路径app.post(/ocr) async def ocr_endpoint( file: UploadFile File(...), prompt_type: str Form(document), find_term: str Form(), custom_prompt: str Form(), grounding: bool Form(False) ):参数名类型可选值说明file文件上传必填待识别的图像文件JPG/PNG等prompt_type字符串document,ocr,free,figure,describe,find,freeform指定识别模式find_term字符串可选查找并标注特定关键词custom_prompt字符串可选自定义提示词用于控制输出格式grounding布尔值True/False是否启用实体定位分组特别注意对于表格识别任务必须设置prompt_typefigure。该模式会激活模型对表格结构的理解能力输出标准 HTMLtable格式保留原始行列关系和合并单元格信息。若需扩展功能如添加新参数或修改返回格式可直接修改web_service.py并重新构建镜像。3. SpringBoot 应用接入 OCR 服务3.1 业务场景建模典型应用场景零售企业采购入库流程中采购员拍摄纸质采购单系统自动识别表格内容生成结构化数据供人工校验后一键入库。目标将一张包含多行商品信息的采购表图片 → 解析为 JSON 数组对象。输入示例图片期望输出JSON[ { 序号: 1, 条码: 6949123352617, 名称: 飞科PR-5261毛球修剪器, 单位: 个, 订货数量: 0.00, 采购数量: 1.00, 赠送数量: 0.00, 采购单价: 38.5000, 金额小计: 38.5000, 备注: }, ... ]3.2 OcrService 接口设计定义统一服务接口解耦具体实现// src/main/java/com/kaifamiao/dswebui/service/OcrService.java public interface OcrService { /** * 识别表格图片并返回结构化数据 * * param file 上传的包含表格的图片文件 * return 包含表格数据的Map对象将以JSON格式返回给前端 */ MapString, Object recognitionTable(MultipartFile file); }3.3 服务实现HTTP调用与HTML解析1. 发送POST请求至OCR服务使用RestTemplate构造 multipart/form-data 请求Service Slf4j public class DeepSeekOcrService implements OcrService { private static final String OCR_SERVICE_URL http://localhost:8080/ocr; Override public MapString, Object recognitionTable(MultipartFile file) { log.info(开始识别表格文件名: {}, file.getOriginalFilename()); try { RestTemplate restTemplate new RestTemplate(); // 准备文件资源 ByteArrayResource resource new ByteArrayResource(file.getBytes()) { Override public String getFilename() { return file.getOriginalFilename(); } }; // 构建请求参数 MultiValueMapString, Object body new LinkedMultiValueMap(); body.add(file, resource); body.add(prompt_type, figure); // 关键启用表格解析模式 // 设置请求头 HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); // 创建请求实体 HttpEntityMultiValueMapString, Object requestEntity new HttpEntity(body, headers); // 发送请求 ResponseEntityString response restTemplate.postForEntity( OCR_SERVICE_URL, requestEntity, String.class); if (response.getStatusCode().is2xxSuccessful()) { String htmlContent response.getBody(); return parseHtmlTableToJSON(htmlContent); } else { throw new RuntimeException(OCR服务调用失败: response.getStatusCode()); } } catch (Exception e) { log.error(表格识别过程中发生异常, e); MapString, Object errorResult new HashMap(); errorResult.put(success, false); errorResult.put(message, e.getMessage()); return errorResult; } } }2. HTML 表格解析为 JSON利用Jsoup解析 HTML 并转换为 ListMapString, String 结构private MapString, Object parseHtmlTableToJSON(String html) { Document doc Jsoup.parse(html); Element table doc.selectFirst(table); ListMapString, String result new ArrayList(); if (table null) { throw new IllegalArgumentException(未检测到有效表格); } Elements rows table.select(tr); if (rows.isEmpty()) return Collections.emptyMap(); // 提取表头 Elements headers rows.first().select(td, th); ListString headerNames headers.stream() .map(Element::text) .collect(Collectors.toList()); // 遍历数据行 for (int i 1; i rows.size(); i) { Element row rows.get(i); Elements cells row.select(td); MapString, String rowData new LinkedHashMap(); for (int j 0; j Math.min(cells.size(), headerNames.size()); j) { String key headerNames.get(j); String value cells.get(j).text(); rowData.put(key, value.trim()); } result.add(rowData); } MapString, Object resultMap new HashMap(); resultMap.put(success, true); resultMap.put(data, result); resultMap.put(totalRows, result.size()); return resultMap; }3.4 控制器层暴露REST接口RestController RequestMapping(/api/ocr) Slf4j public class OcrController { Autowired private OcrService ocrService; PostMapping(/process) public MapString, Object processFile(RequestParam(file) MultipartFile file) { MapString, Object result ocrService.recognitionTable(file); log.info(OCR识别结果: {}, result); return result; } }3.5 单元测试验证功能SpringBootTest Slf4j public class OcrServiceTest { Autowired private OcrService ocrService; Test void testRecognitionTableSuccess() throws Exception { ClassPathResource resource new ClassPathResource(voucher.jpg); MockMultipartFile file new MockMultipartFile( file, voucher.jpg, image/jpeg, resource.getInputStream() ); MapString, Object result ocrService.recognitionTable(file); log.info(OCR识别结果: {}, JSON.toJSONString(result)); Assertions.assertTrue((Boolean) result.get(success)); Assertions.assertNotNull(result.get(data)); } }4. 前后端整合与打包部署4.1 前端页面集成项目前端采用 Vue 编写主要功能包括图片上传组件实时预览区域识别结果展示表格导出JSON按钮编译命令npm install npm run build构建产物dist/目录需复制到 SpringBoot 项目的src/main/resources/static/下使其可通过 HTTP 访问。4.2 后端打包配置使用 Maven 打包 SpringBoot 应用build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build执行打包mvn clean package生成 JAR 文件路径target/deepseek-web-ui-1.0.0.jar4.3 Docker 容器化部署DockerfileFROM openjdk:21-jdk-slim WORKDIR /app COPY target/deepseek-web-ui-1.0.0.jar /app/deepseek-web-ui.jar EXPOSE 8080 ENTRYPOINT [java, -jar, deepseek-web-ui.jar]docker-compose.ymlversion: 3.8 services: ocr-app: build: . ports: - 8080:8080 environment: - SERVER_PORT8080 volumes: - ./logs:/app/logs启动服务docker compose up -d --build访问地址http://localhost:8080最终效果识别结果展示获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询