mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-17 21:27:23 +08:00
Align Go parser backends and PDF pipeline with Python (#16676)
Ports remaining Go parser wiring and PDF backends, adds tenant-aware VLM dispatch, aligns post-processing with Python, and adds end-to-end pipeline coverage with a generated six-page PDF.
This commit is contained in:
@@ -12,10 +12,36 @@ import (
|
||||
)
|
||||
|
||||
func (p *PDFParser) ParseWithResult(filename string, data []byte) ParseResult {
|
||||
if err := p.validateParseMethod(); err != nil {
|
||||
return ParseResult{Err: err}
|
||||
}
|
||||
switch normalizePDFParseMethod(p.ParseMethod) {
|
||||
case "plain_text":
|
||||
return parsePDFWithPlainText(filename, data, p)
|
||||
case "mineru":
|
||||
return parsePDFWithMinerU(filename, data, p)
|
||||
case "paddleocr":
|
||||
return parsePDFWithPaddleOCR(filename, data, p)
|
||||
case "docling":
|
||||
return parsePDFWithDocling(filename, data, p)
|
||||
case "opendataloader":
|
||||
return parsePDFWithOpenDataLoader(filename, data, p)
|
||||
case "somark":
|
||||
return parsePDFWithSoMark(filename, data, p)
|
||||
case "tcadp":
|
||||
return parsePDFWithTCADP(filename, data, p)
|
||||
}
|
||||
cfg := deepdoctype.DefaultParserConfig()
|
||||
cfg.SkipOCR = false
|
||||
parser := deepdocpdf.NewParser(cfg)
|
||||
res := parsePDFWithDeepDoc(context.Background(), filename, data, parser.Parse)
|
||||
res := parsePDFWithDeepDocOptions(context.Background(), filename, data, pdfPostProcessOptions{
|
||||
outputFormat: p.OutputFormat,
|
||||
zoom: cfg.Zoom,
|
||||
enableMultiColumn: p.EnableMultiColumn,
|
||||
flattenMediaToText: p.FlattenMediaToText,
|
||||
removeTOC: p.RemoveTOC,
|
||||
removeHeaderFooter: p.RemoveHeaderFooter,
|
||||
}, parser.Parse)
|
||||
if res.Err != nil && errors.Is(res.Err, deepdocpdf.ErrNoPDFData) {
|
||||
return ParseResult{Err: fmt.Errorf("%w: %s", ErrPDFEngineUnavailable, filename)}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user