AI Slop Code RIsk Monitor

oomol-lab/pdf-craft

PDF craft can convert PDF files into various other formats. This project will focus on processing PDF files of scanned books.

24.8 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for oomol-lab/pdf-craft, a Python project with 6,360 GitHub stars. SynthScan examined 67,981 lines of code across 342 source files, recording 1521 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 24.8 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

24.8
Adjusted Signal
24.8
Raw Pattern Score
100%
Time Factor
2026-09-30
Last Push
6.4K
Stars
Python
Language
68.0K
Lines of Code
342
Files
1.5K
Pattern Hits
2026-10-12
Scan Date
0.14
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 52.7/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 1041 finding(s).

Hallucinated Dependency & Supply Chain Risk 28.8/100 · MEDIUM

Are imports declared and package/API names verified? 361 finding(s).

Agent Over-Engineering Ratio 54.3/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 1003 finding(s).

PR Review Velocity Impact 73.5/100 · HIGH

Which changes need focused human review? 1521 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 49MEDIUM 21LOW 1451

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1521 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers869 hits · 844 pts
SeverityFileLineSnippetContext
LOWpdf_craft_tool/runtime.py61def create_ocr_config_from_env(mode: OCRMode | None = None) -> OCRConfig:CODE
LOWpdf_craft_tool/cli.py746def _recording_jev_batch_evaluator(evaluator, output_path: Path):CODE
LOWpdf_craft_tool/cli.py807def _resolve_page_repair_profile(CODE
LOWpdf_craft_tool/cli.py824def _resolve_translation_profiles(translation: dict[str, Any] | None, output_root: Path) -> dict[str, Any] | None:CODE
LOWpdf_craft_tool/smoke/runner.py394def _package_render_selection(CODE
LOWpdf_craft_tool/smoke/runner.py441def _xml_translation_transformer(run: SmokeRun, run_path: Path) -> XMLTranslator | None:CODE
LOWtests/test_furniture_translation.py57 def test_internal_pass_reconciles_toc_and_translates_by_scope(self):CODE
LOWtests/test_furniture_translation.py124 def test_internal_pass_without_furniture_is_a_valid_no_op(self):CODE
LOWtests/test_furniture_translation.py141 def test_internal_pass_preserves_variable_folio_position(self):CODE
LOWtests/test_furniture_translation.py172 def test_internal_pass_translates_only_folio_decoration(self):CODE
LOWtests/test_furniture_translation.py207 def test_translation_coverage_rejects_unknown_furniture_unit(self):CODE
LOWtests/test_furniture_translation.py221 def test_toc_section_preserves_supported_number_prefixes(self):CODE
LOWtests/test_furniture_translation.py238 def test_xml_transformer_keeps_template_and_page_payloads_separate(self):CODE
LOWtests/test_furniture_translation.py259def _translated_narrative_extraction(root: Path) -> PDFCraftExtraction:CODE
LOW⚡tests/test_parser.py66 def test_html_comment_removal(self):CODE
LOW⚡tests/test_parser.py71 def test_processing_instruction_removal(self):CODE
LOW⚡tests/test_parser.py76 def test_cdata_section_removal(self):CODE
LOW⚡tests/test_parser.py86 def test_gfm_tagfilter_script(self):CODE
LOW⚡tests/test_parser.py96 def test_gfm_tagfilter_iframe(self):CODE
LOW⚡tests/test_parser.py130 def test_allowed_url_protocol_https(self):CODE
LOW⚡tests/test_parser.py139 def test_allowed_url_protocol_http(self):CODE
LOW⚡tests/test_parser.py148 def test_allowed_url_protocol_mailto(self):CODE
LOW⚡tests/test_parser.py157 def test_allowed_relative_url(self):CODE
LOW⚡tests/test_parser.py166 def test_disallowed_url_protocol_javascript(self):CODE
LOW⚡tests/test_parser.py176 def test_disallowed_url_protocol_data(self):CODE
LOWtests/test_parser.py43 def test_inline_tag_with_text(self):CODE
LOWtests/test_parser.py119 def test_disallowed_attributes_filtered(self):CODE
LOWtests/test_parser.py188 def test_disallowed_tag_escaped(self):CODE
LOWtests/test_parser.py196 def test_disallowed_tag_with_allowed_child(self):CODE
LOWtests/test_parser.py235 def test_blockquote_with_cite(self):CODE
LOWtests/test_parser.py263 def test_multiple_tags_in_sequence(self):CODE
LOWtests/test_parser.py299 def test_html_entities_in_attributes(self):CODE
LOWtests/test_parser.py340 def test_mixed_content_complex(self):CODE
LOWtests/test_parser.py352 def test_incomplete_tag_treated_as_text(self):CODE
LOWtests/test_parser.py357 def test_video_tag_with_attributes(self):CODE
LOWtests/test_parser.py385 def test_multiple_attributes_filtering(self):CODE
LOWtests/test_parser.py401 def test_case_insensitive_tag_names(self):CODE
LOWtests/test_parser.py433 def test_single_quoted_attributes(self):CODE
LOWtests/test_subprocess_lifecycle.py133 async def test_direct_commands_reap_children_after_success_and_failure(self):STRING
LOWtests/test_subprocess_lifecycle.py152 async def test_direct_async_command_cancellation_reaps_children(self):STRING
LOWtests/test_subprocess_lifecycle.py165 async def test_pdftotext_success_and_failure_are_reaped(self):STRING
LOWtests/test_subprocess_lifecycle.py191 async def test_extract_cancellation_reaps_pdftotext_process_tree(self):STRING
LOWtests/test_subprocess_lifecycle.py209 async def test_qt_patch_success_and_failure_reap_ghostscript(self):STRING
LOWtests/test_subprocess_lifecycle.py231 async def test_qt_patch_cancellation_reaps_ghostscript_process_tree(self):STRING
LOWtests/test_subprocess_lifecycle.py276async def _run_subprocess_sync_async(*command: str) -> tuple[bytes, bytes]:STRING
LOWtests/test_llm_loop.py12 async def test_retries_with_typed_protocol_and_bounded_history(self):CODE
LOWtests/test_llm_loop.py39 async def test_preserves_initial_messages_when_history_is_cropped(self):CODE
LOWtests/test_llm_loop.py63 async def test_reset_history_discards_previous_retry_messages_but_keeps_initial(self):CODE
LOWtests/test_llm_loop.py86 async def test_max_attempts_is_total_requests_and_transport_errors_propagate(self):CODE
LOWtests/test_llm_loop.py114 async def test_protocol_callback_exceptions_propagate(self):CODE
LOW⚡tests/test_jointer.py550 def test_single_dollar_inline_formula(self):CODE
LOW⚡tests/test_jointer.py560 def test_double_dollar_formula(self):CODE
LOW⚡tests/test_jointer.py570 def test_parenthesis_inline_formula(self):CODE
LOW⚡tests/test_jointer.py580 def test_bracket_display_formula(self):CODE
LOWtests/test_jointer.py19 def test_equation_with_bracket_notation(self):CODE
LOWtests/test_jointer.py35 def test_equation_with_double_dollar(self):CODE
LOWtests/test_jointer.py51 def test_equation_with_parenthesis_notation(self):CODE
LOWtests/test_jointer.py67 def test_equation_with_single_dollar(self):CODE
LOWtests/test_jointer.py83 def test_equation_without_title(self):CODE
LOWtests/test_jointer.py99 def test_equation_without_caption(self):CODE
809 more matches not shown…
Unused Imports325 hits · 282 pts
SeverityFileLineSnippetContext
LOWpdf_craft_tool/smoke/page_repair.py3CODE
LOWpdf_craft_tool/smoke/__init__.py3CODE
LOWpdf_craft_tool/smoke/__init__.py3CODE
LOWpdf_craft_tool/smoke/__init__.py3CODE
LOWtests/test_anchored_content_translation.py5CODE
LOWtests/test_chapter_formula_translation.py5CODE
LOWpdf_craft/jev.py3CODE
LOWpdf_craft/_windows_process_wrapper.py3CODE
LOWpdf_craft/_process_worker.py3CODE
LOWpdf_craft/concurrency.py3CODE
LOWpdf_craft/__init__.py1CODE
LOWpdf_craft/__init__.py1CODE
LOWpdf_craft/__init__.py1CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py3CODE
LOWpdf_craft/__init__.py15CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py16CODE
LOWpdf_craft/__init__.py30CODE
LOWpdf_craft/__init__.py30CODE
LOWpdf_craft/__init__.py30CODE
LOWpdf_craft/__init__.py31CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py32CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
LOWpdf_craft/__init__.py44CODE
265 more matches not shown…
Magic Placeholder Names35 hits · 175 pts
SeverityFileLineSnippetContext
HIGHREADME.md87 api_key="your-api-key",CODE
HIGHREADME.md106 api_key="your-api-key",CODE
HIGHformat.template.json2 "key": "<YOUR_API_KEY>",CODE
HIGHformat.template.json2 "key": "<YOUR_API_KEY>",CODE
HIGHdocs/changelog/v1.0.9.md55 key="your-api-key",CODE
HIGHdocs/changelog/v1.0.10.md86 key="your-api-key",CODE
HIGHdocs/zh-CN/API_REFERENCE.md408 key="your-api-key",CODE
HIGHdocs/zh-CN/API_REFERENCE.md475 key="your-api-key",CODE
HIGHdocs/zh-CN/API_REFERENCE.md575 key="your-api-key",CODE
HIGHdocs/zh-CN/PDF_TRANSLATION.md33 api_key="your-api-key",CODE
HIGHdocs/zh-CN/EPUB_TRANSLATION.md18 key="your-api-key",CODE
HIGHdocs/zh-CN/EPUB_TRANSLATION.md92 key="your-api-key",CODE
HIGHdocs/zh-CN/EPUB_TRANSLATION.md108 key="your-api-key",CODE
HIGHdocs/zh-CN/EPUB_TRANSLATION.md115 key="your-api-key",CODE
HIGHdocs/zh-CN/EPUB_TRANSLATION.md187 key="your-api-key",CODE
HIGHdocs/zh-CN/OCR_BACKENDS.md163 api_key="your-api-key",CODE
HIGHdocs/zh-CN/OCR_BACKENDS.md177 api_key="your-api-key",CODE
HIGHdocs/zh-CN/OCR_BACKENDS.md233 api_key="your-api-key",CODE
HIGHdocs/zh-CN/OCR_BACKENDS.md261 api_key="your-api-key",CODE
HIGHdocs/en/PDF_TRANSLATION.md24 api_key="your-api-key",CODE
HIGHdocs/en/EPUB_TRANSLATION.md17 key="your-api-key",CODE
HIGHdocs/en/EPUB_TRANSLATION.md84 key="your-api-key",CODE
HIGHdocs/en/EPUB_TRANSLATION.md132 key="your-api-key", url="https://example.com/v1",CODE
HIGHdocs/en/EPUB_TRANSLATION.md136 key="your-api-key", url="https://example.com/v1",CODE
HIGHdocs/en/OCR_BACKENDS.md48 api_key="your-api-key",CODE
HIGHdocs/en/OCR_BACKENDS.md85 api_key="your-api-key",CODE
HIGHdocs/readmes/README-ru.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-ko.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-ja.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-de.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-it.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-es.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-zh-TW.md84 api_key="your-api-key",CODE
HIGHdocs/readmes/README-zh-CN.md87 api_key="your-api-key",CODE
HIGHdocs/readmes/README-fr.md84 api_key="your-api-key",CODE
Deep Nesting143 hits · 139 pts
SeverityFileLineSnippetContext
LOWpdf_craft_tool/smoke/checks.py39CODE
LOWtests/test_subprocess_lifecycle.py133CODE
LOWtests/test_subprocess_lifecycle.py209CODE
LOWtests/test_furniture.py83CODE
LOWtests/test_furniture.py162CODE
LOWtests/test_failure_fallback_epub.py261CODE
LOWtests/test_pcex_translation_layers.py215CODE
LOWtests/test_async_api.py950CODE
LOWtests/test_vendor_ocr_concurrency.py417CODE
LOWtests/test_vendor_ocr_concurrency.py464CODE
LOWtests/test_vendor_ocr_concurrency.py869CODE
LOWtests/test_vendor_ocr_concurrency.py1737CODE
LOWtests/test_vendor_ocr_concurrency.py1942CODE
LOWtests/test_pdf_craft_extraction.py188CODE
LOWtests/test_pdf_craft_extraction.py242CODE
LOWtests/test_pdf_craft_extraction.py266CODE
LOWtests/test_pdf_eraser.py100CODE
LOWtests/test_pcex_translation_rendering.py53CODE
LOWtests/test_pcex_translation_rendering.py362CODE
LOWtests/test_pcex_translation_rendering.py441CODE
LOWpdf_craft/jev.py77CODE
LOWpdf_craft/concurrency.py347CODE
LOWpdf_craft/concurrency.py362CODE
LOWpdf_craft/concurrency.py474CODE
LOWpdf_craft/runtime.py369CODE
LOWpdf_craft/expression.py23CODE
LOWpdf_craft/expression.py36CODE
LOWpdf_craft/expression.py51CODE
LOWpdf_craft/expression.py68CODE
LOWpdf_craft/pipeline/pdf/text_layout.py322CODE
LOWpdf_craft/pipeline/pdf/text_layout.py528CODE
LOWpdf_craft/pipeline/pdf/text_layout.py710CODE
LOWpdf_craft/pipeline/pdf/text_layout.py978CODE
LOWpdf_craft/pipeline/pdf/text_layout.py1310CODE
LOWpdf_craft/pipeline/pdf/text_layout.py2347CODE
LOWpdf_craft/pipeline/pdf/visual_base.py256CODE
LOWpdf_craft/pipeline/pdf/visual_base.py385CODE
LOWpdf_craft/pipeline/pdf/pipeline.py342CODE
LOWpdf_craft/pipeline/pdf/pipeline.py76CODE
LOWpdf_craft/pipeline/pdf/patcher.py88CODE
LOWpdf_craft/pipeline/pdf/patcher.py283CODE
LOWpdf_craft/pipeline/epub/translation/translator.py51CODE
LOWpdf_craft/pipeline/epub/translation/translator.py120CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py107CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py382CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py444CODE
LOWpdf_craft/pipeline/epub/adapter/zip.py28CODE
LOWpdf_craft/pipeline/epub/adapter/spines.py10CODE
LOWpdf_craft/pipeline/epub/adapter/math.py56CODE
LOWpdf_craft/renderer/epub/anchored.py224CODE
LOWpdf_craft/renderer/epub/render.py45CODE
LOWpdf_craft/renderer/epub/render.py221CODE
LOWpdf_craft/renderer/epub/render.py299CODE
LOWpdf_craft/renderer/epub/render.py345CODE
LOWpdf_craft/llm/runtime.py389CODE
LOWpdf_craft/llm/runtime.py162CODE
LOWpdf_craft/markdown/paragraph/render.py63CODE
LOWpdf_craft/markdown/paragraph/render.py77CODE
LOWpdf_craft/markdown/paragraph/parser.py8CODE
LOWpdf_craft/markdown/paragraph/parser.py280CODE
83 more matches not shown…
Excessive Try-Catch Wrapping65 hits · 68 pts
SeverityFileLineSnippetContext
LOWtest.py26except Exception as e:CODE
LOWpdf_craft_tool/smoke/runner.py83 except Exception:CODE
LOWpdf_craft_tool/smoke/runner.py166 except Exception as error: # preserve the full failure report for manual inspectionCODE
LOWpdf_craft_tool/smoke/runner.py261 except Exception as error:CODE
LOWpdf_craft_tool/smoke/checks.py218 except Exception as error:CODE
LOWpdf_craft/jev.py180 except Exception as error:CODE
LOWpdf_craft/craft.py832 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWpdf_craft/concurrency.py311 except Exception as error:CODE
LOWpdf_craft/concurrency.py413 except Exception as error:CODE
LOWpdf_craft/runtime.py58 except Exception:CODE
LOWpdf_craft/runtime.py290 except Exception:CODE
LOWpdf_craft/runtime.py320 except Exception:CODE
LOWpdf_craft/transform.py382 except Exception as error: # Metadata is optional; extraction must remain usable.CODE
LOWpdf_craft/pipeline/pdf/text_layout.py2342 except Exception as error:CODE
LOWpdf_craft/pipeline/pdf/text_layout.py2423 except Exception:CODE
LOWpdf_craft/pipeline/pdf/patcher.py188 except Exception as error:CODE
LOWpdf_craft/pipeline/pdf/patcher.py197 except Exception as error:CODE
LOWpdf_craft/pipeline/pdf/patcher.py341 except Exception as error:CODE
LOWpdf_craft/pipeline/pdf/inline_formula.py118 except Exception: # local TeX packages and individual expressions vary widely.CODE
LOWpdf_craft/pipeline/epub/translation/xml_interrupter.py157 except Exception:CODE
LOWpdf_craft/pipeline/epub/translation/translator.py281 except Exception:CODE
MEDIUMpdf_craft/pipeline/epub/translation/translator.py278def _get_version() -> str:CODE
LOWpdf_craft/pipeline/epub/adapter/zip.py15 except Exception:CODE
LOWpdf_craft/llm/guaranteed.py83 except Exception as error:CODE
LOWpdf_craft/llm/runtime.py194 except Exception as error:CODE
MEDIUMpdf_craft/llm/runtime.py188def invoke_once() -> str:CODE
LOWpdf_craft/transformer/furniture_translation.py177 except Exception:CODE
LOWpdf_craft/transformer/furniture_translation.py202 except Exception:CODE
LOWpdf_craft/transformer/furniture_translation.py221 except Exception:CODE
LOWpdf_craft/transformer/furniture_translation.py282 except Exception: # Isolated furniture must never discard a pcex translation.CODE
LOWpdf_craft/transformer/furniture_translation.py318 except Exception: # A failed decoration must leave its source folio intact.CODE
LOWpdf_craft/transformer/furniture_translation.py390 except Exception: # The failed page's fragments are preserved independently.CODE
LOWpdf_craft/transformer/anchored_translation.py128 except Exception:CODE
LOWpdf_craft/transformer/anchored_translation.py136 except Exception:CODE
LOWpdf_craft/transformer/anchored_translation.py177 except Exception: # Individual asset fallback is deliberately resilient.CODE
LOWpdf_craft/transformer/anchored_translation.py186 except Exception: # A failed asset remains source content.CODE
LOWpdf_craft/transformer/xml_translator/xml/xml_like.py76 except Exception as error:CODE
LOWpdf_craft/pdf/vendor_ocr.py169 except Exception as error:CODE
LOWpdf_craft/pdf/vendor_ocr.py318 except Exception as error:CODE
LOWpdf_craft/pdf/vendor_ocr.py944 except Exception as error:CODE
LOWpdf_craft/pdf/handler.py151 except Exception as error:CODE
LOWpdf_craft/pdf/handler.py162 except Exception as error:CODE
MEDIUMpdf_craft/pdf/handler.py84def metadata(self) -> PDFDocumentMetadata:CODE
LOWpdf_craft/pdf/page_ref.py23 except Exception as error:CODE
LOWpdf_craft/pdf/page_ref.py51 except Exception as error:CODE
LOWpdf_craft/pdf/page_ref.py107 except Exception as error:CODE
LOWpdf_craft/pdf/page_extractor.py216 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py409 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py443 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py463 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py469 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py503 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py518 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py536 except Exception as error:CODE
LOWpdf_craft/pdf/ocr.py584 except Exception as error:CODE
LOWpdf_craft/extractor/toc/llm_analyser.py339 except Exception as e:CODE
LOWpdf_craft/extractor/toc/llm_analyser.py509 except Exception as e:CODE
LOWpdf_craft/extractor/toc/llm_analyser.py612 except Exception as error:CODE
LOWpdf_craft/extractor/chapter/reader.py21 except Exception as e:CODE
LOWpdf_craft/document/package.py1096 except Exception:CODE
5 more matches not shown…
Empty Error Handlers13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHpdf_craft/craft.py811except (ConnectionError, OSError):CODE
HIGHpdf_craft/craft.py799except (EOFError, OSError):CODE
HIGHpdf_craft/concurrency.py180except ValueError:CODE
HIGHpdf_craft/concurrency.py557except asyncio.CancelledError:CODE
HIGHpdf_craft/runtime.py447except FileNotFoundError:CODE
HIGHpdf_craft/runtime.py538except ProcessLookupError:CODE
HIGHpdf_craft/pipeline/epub/translation/xml_interrupter.py157except Exception:CODE
HIGHpdf_craft/transformer/anchored_translation.py128except Exception:CODE
HIGHpdf_craft/transformer/anchored_translation.py177except Exception: # Individual asset fallback is deliberately resilient.CODE
HIGH…t/transformer/xml_translator/segment/inline_segment.py347except ValueError:CODE
HIGHpdf_craft/transformer/xml_translator/xml/xml_like.py133except UnicodeDecodeError:CODE
HIGHpdf_craft/transformer/xml_translator/xml/xml_like.py125except (LookupError, UnicodeDecodeError):CODE
HIGHpdf_craft/pdf/handler.py138except (ValueError, IndexError):CODE
Decorative Section Separators16 hits · 48 pts
SeverityFileLineSnippetContext
MEDIUMpdf_craft/markdown/paragraph/tags.py61# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py63# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py84# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py86# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py101# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py103# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py193# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py195# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py214# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py216# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py229# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py231# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py453# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py455# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py530# ============================================================================COMMENT
MEDIUMpdf_craft/markdown/paragraph/tags.py532# ============================================================================COMMENT
Modern Structural Boilerplate25 hits · 25 pts
SeverityFileLineSnippetContext
LOWpdf_craft_tool/smoke/__init__.py5__all__ = ["SmokeRun", "expand_matrix", "run_smoke"]CODE
LOWpdf_craft/pipeline/__init__.py3__all__ = ["PDFPatcher", "PDFTranslationPipeline"]CODE
LOWpdf_craft/pipeline/pdf/metadata.py38def _set_string(result: dict[str, str], key: str, value: Any) -> None:CODE
LOWpdf_craft/pipeline/pdf/__init__.py12__all__ = [CODE
LOWpdf_craft/pipeline/epub/__init__.py5__all__ = ["translate", "translate_epub"]CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py88def _update_ncx_document_title(root: Element, title: str) -> None:CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py192def _update_ncx_toc(root: Element, toc_list: list[Toc]) -> None:CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py222def _update_nav_point_content(nav_point: Element, toc: Toc, ns: str | None, play_order: int) -> None:CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py338def _update_nav_toc(root: Element, toc_list: list[Toc]) -> None:CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py356def _update_nav_lis(ol: Element, toc_list: list[Toc], ns: str | None) -> None:CODE
LOWpdf_craft/pipeline/epub/adapter/toc.py382def _update_nav_li_content(li: Element, toc: Toc, ns: str | None) -> None:CODE
LOWpdf_craft/renderer/__init__.py5__all__ = ["EpubRenderer", "MarkdownRenderer"]CODE
LOWpdf_craft/renderer/markdown/__init__.py4__all__ = ["MarkdownRenderer"]CODE
LOWpdf_craft/renderer/epub/__init__.py4__all__ = ["EpubRenderer"]CODE
LOWpdf_craft/renderer/epub/latex_to_text.py5__all__ = ["latex_to_plain_text"]CODE
LOWpdf_craft/llm/__init__.py10__all__ = ["LLM", "LLMContext", "LLMRuntime", "Message", "MessageRole", "runtime_for",CODE
LOWpdf_craft/transformer/__init__.py16__all__ = ["AnchoredContent", "AnchoredContentExtractionTransformer", "AnchoredContentTransformer", "AnchoredContentTranCODE
LOWpdf_craft/transformer/furniture_translation.py333def _set_optional_attribute(element: Element, name: str, value: str) -> None:CODE
LOWpdf_craft/transformer/xml_translator/__init__.py4__all__ = ["FillFailedEvent", "SubmitKind", "TranslationTask", "XMLTranslator", "TranslationEvent", "TranslationEventKinCODE
LOWpdf_craft/extractor/__init__.py4__all__ = ["PDFExtractor"]CODE
LOWpdf_craft/extractor/toc/analysing.py20logger = logging.getLogger(__name__)CODE
LOWpdf_craft/extractor/pdf/__init__.py4__all__ = ["PDFExtractor"]CODE
LOWpdf_craft/document/__init__.py13__all__ = [CODE
LOWpdf_craft/formula/__init__.py5__all__ = ["latex_to_plain_text"]CODE
LOWpdf_craft/sync/__init__.py6__all__ = ["PDFCraft", "SyncAnchoredContentTransformer"]CODE
AI Structural Patterns15 hits · 15 pts
SeverityFileLineSnippetContext
LOWpdf_craft/craft.py282CODE
LOWpdf_craft/craft.py373CODE
LOWpdf_craft/craft.py407CODE
LOWpdf_craft/transform.py218CODE
LOWpdf_craft/pipeline/epub/translation/translator.py51CODE
LOWpdf_craft/renderer/epub/renderer.py17CODE
LOWpdf_craft/renderer/epub/renderer.py38CODE
LOW…ransformer/xml_translator/xml_translator/translator.py141CODE
LOW…ransformer/xml_translator/xml_translator/translator.py199CODE
LOW…ransformer/xml_translator/xml_translator/translator.py308CODE
LOWpdf_craft/pdf/ocr.py102CODE
LOWpdf_craft/pdf/ocr.py624CODE
LOWpdf_craft/sync/craft.py110CODE
LOWpdf_craft/sync/craft.py167CODE
LOWpdf_craft/sync/craft.py188CODE
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippetContext
LOWpdf_craft/markdown/paragraph/parser.py125 # Check if it's a closing tagCOMMENT
LOWpdf_craft/markdown/paragraph/parser.py147 # Check if this tag should be filtered by GFM tagfilterCOMMENT
LOWpdf_craft/markdown/paragraph/parser.py152 # Check if tag is in whitelistCOMMENT
LOWpdf_craft/markdown/paragraph/parser.py170 # Check if this tag should be filtered by GFM tagfilterCOMMENT
LOWpdf_craft/markdown/paragraph/parser.py175 # Check if this tag should be ignored (removed but children preserved)COMMENT
LOWpdf_craft/markdown/paragraph/parser.py194 # Check if tag is in whitelistCOMMENT
LOWpdf_craft/markdown/paragraph/parser.py383 # Check if attribute is allowed for this tagCOMMENT
Over-Commented Block5 hits · 5 pts
SeverityFileLineSnippetContext
LOWpdf_craft/pipeline/pdf/text_layout.py601 # Test doubles and external subclasses may report a successfulCOMMENT
LOWpdf_craft/pipeline/epub/translation/xml_interrupter.py101 block_depth=find_block_depth(parent_stack),COMMENT
LOWpdf_craft/transformer/xml_translator/xml/xml_like.py41# attribute, including ones that should remain unprefixed (e.g., <link type="text/css">).COMMENT
LOW…transformer/xml_translator/xml_translator/submitter.py301 # 需要翻译的文字会被嵌套到两种不同的结构中。COMMENT
LOWpdf_craft/extractor/toc/text.py1import reCOMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHpdf_craft/extractor/metadata.py376{"name": evidence, "original_name": evidence-or-null, "nationality": evidence-or-null}.CODE
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_pdf_windowed_layout.py511 # retains PDF ActualText wrapping for robust extraction.COMMENT
MEDIUMpdf_craft/pipeline/pdf/eraser.py119 """Return a robust, hue-preserving RGB median for one source rectangle.STRING