feat: clean up yomitoku page images (_pN.jpg) after OCR
yomitoku always generates per-page JPEG files that cannot be suppressed via CLI options. Remove these after successful OCR while preserving the markdown output and figures/ directory (referenced by markdown). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
51f08e7f50
commit
b4b6c110cc
1 changed files with 41 additions and 0 deletions
|
|
@ -568,6 +568,11 @@ func (al *AgentLoop) ocrPDF(
|
||||||
return fmt.Sprintf("[file:%s]", pdfPath)
|
return fmt.Sprintf("[file:%s]", pdfPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean up page images (_pN.jpg) generated by yomitoku.
|
||||||
|
// These are always created and cannot be suppressed via CLI options.
|
||||||
|
// Keep: .md files, figures/ directory (referenced by markdown output).
|
||||||
|
cleanupOCRPageImages(outputDir, pdfPath)
|
||||||
|
|
||||||
// Find the output markdown file
|
// Find the output markdown file
|
||||||
mdPath := findOCROutput(outputDir, pdfPath)
|
mdPath := findOCROutput(outputDir, pdfPath)
|
||||||
if mdPath == "" {
|
if mdPath == "" {
|
||||||
|
|
@ -669,3 +674,39 @@ func ocrEnvSlice(env map[string]string) []string {
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cleanupOCRPageImages removes _pN.jpg files generated by yomitoku.
|
||||||
|
// These per-page images are always created by the CLI and cannot be suppressed.
|
||||||
|
// Only top-level _pN.jpg files matching the PDF basename are removed;
|
||||||
|
// the figures/ subdirectory and .md files are preserved.
|
||||||
|
func cleanupOCRPageImages(outputDir, pdfPath string) {
|
||||||
|
base := strings.TrimSuffix(filepath.Base(pdfPath), filepath.Ext(pdfPath))
|
||||||
|
entries, err := os.ReadDir(outputDir)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
removed := 0
|
||||||
|
for _, e := range entries {
|
||||||
|
if e.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
name := e.Name()
|
||||||
|
// Match pattern: <dirname>_<basename>_pN.jpg
|
||||||
|
if !strings.HasSuffix(strings.ToLower(name), ".jpg") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !strings.Contains(name, base+"_p") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if rmErr := os.Remove(filepath.Join(outputDir, name)); rmErr == nil {
|
||||||
|
removed++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if removed > 0 {
|
||||||
|
logger.DebugCF("agent", "Cleaned up OCR page images", map[string]any{
|
||||||
|
"dir": outputDir,
|
||||||
|
"removed": removed,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue