feat: process multiple documents for auto-tagging and OCR

This commit is contained in:
Dominik Schröter 2025-01-13 10:45:02 +01:00
parent 6e88a1b7bb
commit 7a4a0d6d72

26
main.go
View file

@ -375,27 +375,28 @@ func (app *App) processAutoTagDocuments() (int, error) {
log.Debugf("Found at least %d remaining documents with tag %s", len(documents), autoTag) log.Debugf("Found at least %d remaining documents with tag %s", len(documents), autoTag)
documents = documents[:1] // Process only one document at a time for _, document := range documents {
docLogger := documentLogger(documents[0].ID) docLogger := documentLogger(document.ID)
docLogger.Info("Processing document for auto-tagging") docLogger.Info("Processing document for auto-tagging")
suggestionRequest := GenerateSuggestionsRequest{ suggestionRequest := GenerateSuggestionsRequest{
Documents: documents, Documents: []Document{document},
GenerateTitles: strings.ToLower(autoGenerateTitle) != "false", GenerateTitles: strings.ToLower(autoGenerateTitle) != "false",
GenerateTags: strings.ToLower(autoGenerateTags) != "false", GenerateTags: strings.ToLower(autoGenerateTags) != "false",
} }
suggestions, err := app.generateDocumentSuggestions(ctx, suggestionRequest, docLogger) suggestions, err := app.generateDocumentSuggestions(ctx, suggestionRequest, docLogger)
if err != nil { if err != nil {
return 0, fmt.Errorf("error generating suggestions for document %d: %w", documents[0].ID, err) return 0, fmt.Errorf("error generating suggestions for document %d: %w", document.ID, err)
} }
err = app.Client.UpdateDocuments(ctx, suggestions, app.Database, false) err = app.Client.UpdateDocuments(ctx, suggestions, app.Database, false)
if err != nil { if err != nil {
return 0, fmt.Errorf("error updating document %d: %w", documents[0].ID, err) return 0, fmt.Errorf("error updating document %d: %w", document.ID, err)
} }
docLogger.Info("Successfully processed document") docLogger.Info("Successfully processed document")
}
return len(documents), nil return len(documents), nil
} }
@ -415,29 +416,30 @@ func (app *App) processAutoOcrTagDocuments() (int, error) {
log.Debugf("Found at least %d remaining documents with tag %s", len(documents), autoOcrTag) log.Debugf("Found at least %d remaining documents with tag %s", len(documents), autoOcrTag)
documents = documents[:1] // Process only one document at a time for _, document := range documents {
docLogger := documentLogger(documents[0].ID) docLogger := documentLogger(document.ID)
docLogger.Info("Processing document for OCR") docLogger.Info("Processing document for OCR")
ocrContent, err := app.ProcessDocumentOCR(ctx, documents[0].ID) ocrContent, err := app.ProcessDocumentOCR(ctx, document.ID)
if err != nil { if err != nil {
return 0, fmt.Errorf("error processing OCR for document %d: %w", documents[0].ID, err) return 0, fmt.Errorf("error processing OCR for document %d: %w", document.ID, err)
} }
docLogger.Debug("OCR processing completed") docLogger.Debug("OCR processing completed")
err = app.Client.UpdateDocuments(ctx, []DocumentSuggestion{ err = app.Client.UpdateDocuments(ctx, []DocumentSuggestion{
{ {
ID: documents[0].ID, ID: document.ID,
OriginalDocument: documents[0], OriginalDocument: document,
SuggestedContent: ocrContent, SuggestedContent: ocrContent,
RemoveTags: []string{autoOcrTag}, RemoveTags: []string{autoOcrTag},
}, },
}, app.Database, false) }, app.Database, false)
if err != nil { if err != nil {
return 0, fmt.Errorf("error updating document %d after OCR: %w", documents[0].ID, err) return 0, fmt.Errorf("error updating document %d after OCR: %w", document.ID, err)
} }
docLogger.Info("Successfully processed document OCR") docLogger.Info("Successfully processed document OCR")
}
return 1, nil return 1, nil
} }