fix: 补齐L09的MinerU自动装配配置类
- 新增 MinerU Spring Boot 配置属性类 - 新增 PDF 文档解析自动装配并暴露统一 DocumentParseService
This commit is contained in:
@@ -0,0 +1,119 @@
|
|||||||
|
package com.easyagents.spring.boot.document.pdf.mineru;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MinerU Spring Boot 配置。
|
||||||
|
*
|
||||||
|
* @author Codex
|
||||||
|
* @since 2026-04-14
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties(prefix = "easy-agents.document.pdf.mineru")
|
||||||
|
public class MineruDocumentProperties {
|
||||||
|
|
||||||
|
private String baseUrl;
|
||||||
|
private Integer connectTimeoutMs = 3000;
|
||||||
|
private Integer readTimeoutMs = 600000;
|
||||||
|
private Integer writeTimeoutMs = 600000;
|
||||||
|
private Integer pollIntervalMs = 1000;
|
||||||
|
private Integer resultTimeoutMs = 1800000;
|
||||||
|
private String defaultBackend = "vlm-http-client";
|
||||||
|
private String defaultParseMethod = "auto";
|
||||||
|
private List<String> defaultLangList = new ArrayList<String>(Arrays.asList("ch"));
|
||||||
|
private Boolean defaultFormulaEnable = true;
|
||||||
|
private Boolean defaultTableEnable = true;
|
||||||
|
|
||||||
|
public String getBaseUrl() {
|
||||||
|
return baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBaseUrl(String baseUrl) {
|
||||||
|
this.baseUrl = baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getConnectTimeoutMs() {
|
||||||
|
return connectTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConnectTimeoutMs(Integer connectTimeoutMs) {
|
||||||
|
this.connectTimeoutMs = connectTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getReadTimeoutMs() {
|
||||||
|
return readTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReadTimeoutMs(Integer readTimeoutMs) {
|
||||||
|
this.readTimeoutMs = readTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getWriteTimeoutMs() {
|
||||||
|
return writeTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWriteTimeoutMs(Integer writeTimeoutMs) {
|
||||||
|
this.writeTimeoutMs = writeTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPollIntervalMs() {
|
||||||
|
return pollIntervalMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPollIntervalMs(Integer pollIntervalMs) {
|
||||||
|
this.pollIntervalMs = pollIntervalMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getResultTimeoutMs() {
|
||||||
|
return resultTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResultTimeoutMs(Integer resultTimeoutMs) {
|
||||||
|
this.resultTimeoutMs = resultTimeoutMs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultBackend() {
|
||||||
|
return defaultBackend;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultBackend(String defaultBackend) {
|
||||||
|
this.defaultBackend = defaultBackend;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultParseMethod() {
|
||||||
|
return defaultParseMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultParseMethod(String defaultParseMethod) {
|
||||||
|
this.defaultParseMethod = defaultParseMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getDefaultLangList() {
|
||||||
|
return defaultLangList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultLangList(List<String> defaultLangList) {
|
||||||
|
this.defaultLangList = defaultLangList == null
|
||||||
|
? new ArrayList<String>(Arrays.asList("ch"))
|
||||||
|
: defaultLangList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getDefaultFormulaEnable() {
|
||||||
|
return defaultFormulaEnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultFormulaEnable(Boolean defaultFormulaEnable) {
|
||||||
|
this.defaultFormulaEnable = defaultFormulaEnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getDefaultTableEnable() {
|
||||||
|
return defaultTableEnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultTableEnable(Boolean defaultTableEnable) {
|
||||||
|
this.defaultTableEnable = defaultTableEnable;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.easyagents.spring.boot.document.pdf.mineru;
|
||||||
|
|
||||||
|
import com.easyagents.document.core.DocumentParseService;
|
||||||
|
import com.easyagents.document.pdf.PdfDocumentParseService;
|
||||||
|
import com.easyagents.document.pdf.mineru.MineruPdfDocumentParseService;
|
||||||
|
import com.easyagents.document.pdf.mineru.MineruProperties;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MinerU PDF 文档解析自动装配。
|
||||||
|
*
|
||||||
|
* @author Codex
|
||||||
|
* @since 2026-04-14
|
||||||
|
*/
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@ConditionalOnClass(MineruPdfDocumentParseService.class)
|
||||||
|
@ConditionalOnProperty(prefix = "easy-agents.document.pdf", name = "provider", havingValue = "mineru")
|
||||||
|
@EnableConfigurationProperties(MineruDocumentProperties.class)
|
||||||
|
public class MineruPdfAutoConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注册统一 PDF 解析服务。
|
||||||
|
*
|
||||||
|
* @param properties Spring Boot 配置
|
||||||
|
* @return PDF 解析服务
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(PdfDocumentParseService.class)
|
||||||
|
public PdfDocumentParseService pdfDocumentParseService(MineruDocumentProperties properties) {
|
||||||
|
return new MineruPdfDocumentParseService(toMineruProperties(properties));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 PDF 服务以统一文档解析服务类型暴露,便于调用方直接按抽象注入。
|
||||||
|
*
|
||||||
|
* @param pdfDocumentParseService PDF 解析服务
|
||||||
|
* @return 统一文档解析服务
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(DocumentParseService.class)
|
||||||
|
public DocumentParseService documentParseService(PdfDocumentParseService pdfDocumentParseService) {
|
||||||
|
return pdfDocumentParseService;
|
||||||
|
}
|
||||||
|
|
||||||
|
private MineruProperties toMineruProperties(MineruDocumentProperties properties) {
|
||||||
|
MineruProperties mineruProperties = new MineruProperties();
|
||||||
|
mineruProperties.setBaseUrl(properties.getBaseUrl());
|
||||||
|
mineruProperties.setConnectTimeoutMs(properties.getConnectTimeoutMs());
|
||||||
|
mineruProperties.setReadTimeoutMs(properties.getReadTimeoutMs());
|
||||||
|
mineruProperties.setWriteTimeoutMs(properties.getWriteTimeoutMs());
|
||||||
|
mineruProperties.setPollIntervalMs(properties.getPollIntervalMs());
|
||||||
|
mineruProperties.setResultTimeoutMs(properties.getResultTimeoutMs());
|
||||||
|
mineruProperties.setDefaultBackend(properties.getDefaultBackend());
|
||||||
|
mineruProperties.setDefaultParseMethod(properties.getDefaultParseMethod());
|
||||||
|
mineruProperties.setDefaultLangList(properties.getDefaultLangList());
|
||||||
|
mineruProperties.setDefaultFormulaEnable(properties.getDefaultFormulaEnable());
|
||||||
|
mineruProperties.setDefaultTableEnable(properties.getDefaultTableEnable());
|
||||||
|
return mineruProperties;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user