mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-08 12:24:48 +08:00
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.
53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
//go:build cgo
|
|
|
|
package parser
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
|
|
deepdocpdf "ragflow/internal/deepdoc/parser/pdf"
|
|
deepdoctype "ragflow/internal/deepdoc/parser/type"
|
|
)
|
|
|
|
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 := 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)}
|
|
}
|
|
if res.Err != nil && res.Err.Error() == "deepdoc/pdf: cgo required" {
|
|
return ParseResult{Err: fmt.Errorf("%w: %s", ErrPDFEngineUnavailable, filename)}
|
|
}
|
|
return res
|
|
}
|